// var ident , peopledef , un , whole_units ; export Burlak_saved , Gaydar_saved , Gaydar_wait , you , ally , arab , attack , selfdefend , sm_attack1 , sm_attack2 , sm_attack3 , other , alliance , Burlak , Gnyevko , Platonov , Belkov , Scholtze , Kuzmov , Kovalyuk , SoldierX , Soldier1 , Scientist1 , Engineer1 , Mechanic1 , Popov , Gaydar , Heike , new , player_units , saved_player_units , Convoy , Convoy_length , Convoy_delay , FirstCargo , trucks_diverted_count , trucks_diverted_list , number_of_trucks , number_of_guns , number_of_hv_guns , number_of_gatlings , number_of_hv_mchn_gun , konec , RecklessAttack , BelkovFreed , pocet , count , attack_offset , attack_count , ar_killed , was_combat , driver , lab_upgraded , workshop_upgraded , depot_build , workshop_build , armoury_build , bunker_build , turret_build , base_dismantled , player_building_captured , pocet_budov , waypointsEND , sm_pocet1_2 , sm_pocet3 , Disabled4 , Disabled8 , Disabled9 , Disabled13 ; function set_difficulty ; begin
   0: LD_INT 0
   2: PPUSH
// number_of_trucks := [ 20 , 17 , 14 ] [ difficulty ] ;
   3: LD_ADDR_EXP 38
   7: PUSH
   8: LD_INT 20
  10: PUSH
  11: LD_INT 17
  13: PUSH
  14: LD_INT 14
  16: PUSH
  17: EMPTY
  18: LIST
  19: LIST
  20: LIST
  21: PUSH
  22: LD_OWVAR 67
  26: ARRAY
  27: ST_TO_ADDR
// number_of_guns := [ 13 , 11 , 9 ] [ difficulty ] ;
  28: LD_ADDR_EXP 39
  32: PUSH
  33: LD_INT 13
  35: PUSH
  36: LD_INT 11
  38: PUSH
  39: LD_INT 9
  41: PUSH
  42: EMPTY
  43: LIST
  44: LIST
  45: LIST
  46: PUSH
  47: LD_OWVAR 67
  51: ARRAY
  52: ST_TO_ADDR
// number_of_hv_guns := [ 6 , 5 , 4 ] [ difficulty ] ;
  53: LD_ADDR_EXP 40
  57: PUSH
  58: LD_INT 6
  60: PUSH
  61: LD_INT 5
  63: PUSH
  64: LD_INT 4
  66: PUSH
  67: EMPTY
  68: LIST
  69: LIST
  70: LIST
  71: PUSH
  72: LD_OWVAR 67
  76: ARRAY
  77: ST_TO_ADDR
// number_of_gatlings := [ 8 , 6 , 4 ] [ difficulty ] ;
  78: LD_ADDR_EXP 41
  82: PUSH
  83: LD_INT 8
  85: PUSH
  86: LD_INT 6
  88: PUSH
  89: LD_INT 4
  91: PUSH
  92: EMPTY
  93: LIST
  94: LIST
  95: LIST
  96: PUSH
  97: LD_OWVAR 67
 101: ARRAY
 102: ST_TO_ADDR
// number_of_hv_mchn_gun := [ 3 , 2 , 1 ] [ difficulty ] ;
 103: LD_ADDR_EXP 42
 107: PUSH
 108: LD_INT 3
 110: PUSH
 111: LD_INT 2
 113: PUSH
 114: LD_INT 1
 116: PUSH
 117: EMPTY
 118: LIST
 119: LIST
 120: LIST
 121: PUSH
 122: LD_OWVAR 67
 126: ARRAY
 127: ST_TO_ADDR
// convoy_delay := [ [ 60 , 120 ] , [ 45 , 105 ] , [ 30 , 90 ] ] [ difficulty ] ;
 128: LD_ADDR_EXP 34
 132: PUSH
 133: LD_INT 60
 135: PUSH
 136: LD_INT 120
 138: PUSH
 139: EMPTY
 140: LIST
 141: LIST
 142: PUSH
 143: LD_INT 45
 145: PUSH
 146: LD_INT 105
 148: PUSH
 149: EMPTY
 150: LIST
 151: LIST
 152: PUSH
 153: LD_INT 30
 155: PUSH
 156: LD_INT 90
 158: PUSH
 159: EMPTY
 160: LIST
 161: LIST
 162: PUSH
 163: EMPTY
 164: LIST
 165: LIST
 166: LIST
 167: PUSH
 168: LD_OWVAR 67
 172: ARRAY
 173: ST_TO_ADDR
// attack_offset := [ Rand ( 1 1$0 , 1 1$30 ) , Rand ( 0 0$30 , 1 1$0 ) , Rand ( 0 0$0 , 0 0$30 ) ] [ difficulty ] ;
 174: LD_ADDR_EXP 48
 178: PUSH
 179: LD_INT 2100
 181: PPUSH
 182: LD_INT 3150
 184: PPUSH
 185: CALL_OW 12
 189: PUSH
 190: LD_INT 1050
 192: PPUSH
 193: LD_INT 2100
 195: PPUSH
 196: CALL_OW 12
 200: PUSH
 201: LD_INT 0
 203: PPUSH
 204: LD_INT 1050
 206: PPUSH
 207: CALL_OW 12
 211: PUSH
 212: EMPTY
 213: LIST
 214: LIST
 215: LIST
 216: PUSH
 217: LD_OWVAR 67
 221: ARRAY
 222: ST_TO_ADDR
// attack_count := [ 3 , 5 , 7 ] [ difficulty ] ;
 223: LD_ADDR_EXP 49
 227: PUSH
 228: LD_INT 3
 230: PUSH
 231: LD_INT 5
 233: PUSH
 234: LD_INT 7
 236: PUSH
 237: EMPTY
 238: LIST
 239: LIST
 240: LIST
 241: PUSH
 242: LD_OWVAR 67
 246: ARRAY
 247: ST_TO_ADDR
// Gaydar_wait := [ 1 1$30 , 1 1$10 , 0 0$45 ] [ difficulty ] ;
 248: LD_ADDR_EXP 3
 252: PUSH
 253: LD_INT 3150
 255: PUSH
 256: LD_INT 2450
 258: PUSH
 259: LD_INT 1575
 261: PUSH
 262: EMPTY
 263: LIST
 264: LIST
 265: LIST
 266: PUSH
 267: LD_OWVAR 67
 271: ARRAY
 272: ST_TO_ADDR
// waypointsEND := [ [ [ 103 , 105 ] , [ 76 , 36 ] , [ 111 , 105 ] , [ 79 , 94 ] , [ 118 , 104 ] , [ 71 , 85 ] , [ 122 , 98 ] , [ 62 , 75 ] , [ 99 , 48 ] , [ 54 , 52 ] , [ 107 , 55 ] , [ 59 , 38 ] ] , [ [ 91 , 102 ] , [ 103 , 105 ] , [ 111 , 105 ] , [ 79 , 94 ] , [ 118 , 104 ] , [ 71 , 85 ] , [ 122 , 98 ] , [ 62 , 75 ] , [ 120 , 76 ] , [ 54 , 52 ] , [ 107 , 55 ] , [ 59 , 38 ] , [ 99 , 48 ] , [ 66 , 35 ] , [ 88 , 42 ] , [ 76 , 36 ] ] , [ [ 91 , 102 ] , [ 103 , 105 ] , [ 111 , 105 ] , [ 79 , 94 ] , [ 118 , 104 ] , [ 71 , 85 ] , [ 122 , 98 ] , [ 62 , 75 ] , [ 122 , 89 ] , [ 56 , 62 ] , [ 120 , 76 ] , [ 54 , 52 ] , [ 113 , 62 ] , [ 55 , 44 ] , [ 107 , 55 ] , [ 59 , 38 ] , [ 99 , 48 ] , [ 66 , 35 ] , [ 88 , 42 ] , [ 76 , 36 ] ] ] [ difficulty ] ;
 273: LD_ADDR_EXP 63
 277: PUSH
 278: LD_INT 103
 280: PUSH
 281: LD_INT 105
 283: PUSH
 284: EMPTY
 285: LIST
 286: LIST
 287: PUSH
 288: LD_INT 76
 290: PUSH
 291: LD_INT 36
 293: PUSH
 294: EMPTY
 295: LIST
 296: LIST
 297: PUSH
 298: LD_INT 111
 300: PUSH
 301: LD_INT 105
 303: PUSH
 304: EMPTY
 305: LIST
 306: LIST
 307: PUSH
 308: LD_INT 79
 310: PUSH
 311: LD_INT 94
 313: PUSH
 314: EMPTY
 315: LIST
 316: LIST
 317: PUSH
 318: LD_INT 118
 320: PUSH
 321: LD_INT 104
 323: PUSH
 324: EMPTY
 325: LIST
 326: LIST
 327: PUSH
 328: LD_INT 71
 330: PUSH
 331: LD_INT 85
 333: PUSH
 334: EMPTY
 335: LIST
 336: LIST
 337: PUSH
 338: LD_INT 122
 340: PUSH
 341: LD_INT 98
 343: PUSH
 344: EMPTY
 345: LIST
 346: LIST
 347: PUSH
 348: LD_INT 62
 350: PUSH
 351: LD_INT 75
 353: PUSH
 354: EMPTY
 355: LIST
 356: LIST
 357: PUSH
 358: LD_INT 99
 360: PUSH
 361: LD_INT 48
 363: PUSH
 364: EMPTY
 365: LIST
 366: LIST
 367: PUSH
 368: LD_INT 54
 370: PUSH
 371: LD_INT 52
 373: PUSH
 374: EMPTY
 375: LIST
 376: LIST
 377: PUSH
 378: LD_INT 107
 380: PUSH
 381: LD_INT 55
 383: PUSH
 384: EMPTY
 385: LIST
 386: LIST
 387: PUSH
 388: LD_INT 59
 390: PUSH
 391: LD_INT 38
 393: PUSH
 394: EMPTY
 395: LIST
 396: LIST
 397: PUSH
 398: EMPTY
 399: LIST
 400: LIST
 401: LIST
 402: LIST
 403: LIST
 404: LIST
 405: LIST
 406: LIST
 407: LIST
 408: LIST
 409: LIST
 410: LIST
 411: PUSH
 412: LD_INT 91
 414: PUSH
 415: LD_INT 102
 417: PUSH
 418: EMPTY
 419: LIST
 420: LIST
 421: PUSH
 422: LD_INT 103
 424: PUSH
 425: LD_INT 105
 427: PUSH
 428: EMPTY
 429: LIST
 430: LIST
 431: PUSH
 432: LD_INT 111
 434: PUSH
 435: LD_INT 105
 437: PUSH
 438: EMPTY
 439: LIST
 440: LIST
 441: PUSH
 442: LD_INT 79
 444: PUSH
 445: LD_INT 94
 447: PUSH
 448: EMPTY
 449: LIST
 450: LIST
 451: PUSH
 452: LD_INT 118
 454: PUSH
 455: LD_INT 104
 457: PUSH
 458: EMPTY
 459: LIST
 460: LIST
 461: PUSH
 462: LD_INT 71
 464: PUSH
 465: LD_INT 85
 467: PUSH
 468: EMPTY
 469: LIST
 470: LIST
 471: PUSH
 472: LD_INT 122
 474: PUSH
 475: LD_INT 98
 477: PUSH
 478: EMPTY
 479: LIST
 480: LIST
 481: PUSH
 482: LD_INT 62
 484: PUSH
 485: LD_INT 75
 487: PUSH
 488: EMPTY
 489: LIST
 490: LIST
 491: PUSH
 492: LD_INT 120
 494: PUSH
 495: LD_INT 76
 497: PUSH
 498: EMPTY
 499: LIST
 500: LIST
 501: PUSH
 502: LD_INT 54
 504: PUSH
 505: LD_INT 52
 507: PUSH
 508: EMPTY
 509: LIST
 510: LIST
 511: PUSH
 512: LD_INT 107
 514: PUSH
 515: LD_INT 55
 517: PUSH
 518: EMPTY
 519: LIST
 520: LIST
 521: PUSH
 522: LD_INT 59
 524: PUSH
 525: LD_INT 38
 527: PUSH
 528: EMPTY
 529: LIST
 530: LIST
 531: PUSH
 532: LD_INT 99
 534: PUSH
 535: LD_INT 48
 537: PUSH
 538: EMPTY
 539: LIST
 540: LIST
 541: PUSH
 542: LD_INT 66
 544: PUSH
 545: LD_INT 35
 547: PUSH
 548: EMPTY
 549: LIST
 550: LIST
 551: PUSH
 552: LD_INT 88
 554: PUSH
 555: LD_INT 42
 557: PUSH
 558: EMPTY
 559: LIST
 560: LIST
 561: PUSH
 562: LD_INT 76
 564: PUSH
 565: LD_INT 36
 567: PUSH
 568: EMPTY
 569: LIST
 570: LIST
 571: PUSH
 572: EMPTY
 573: LIST
 574: LIST
 575: LIST
 576: LIST
 577: LIST
 578: LIST
 579: LIST
 580: LIST
 581: LIST
 582: LIST
 583: LIST
 584: LIST
 585: LIST
 586: LIST
 587: LIST
 588: LIST
 589: PUSH
 590: LD_INT 91
 592: PUSH
 593: LD_INT 102
 595: PUSH
 596: EMPTY
 597: LIST
 598: LIST
 599: PUSH
 600: LD_INT 103
 602: PUSH
 603: LD_INT 105
 605: PUSH
 606: EMPTY
 607: LIST
 608: LIST
 609: PUSH
 610: LD_INT 111
 612: PUSH
 613: LD_INT 105
 615: PUSH
 616: EMPTY
 617: LIST
 618: LIST
 619: PUSH
 620: LD_INT 79
 622: PUSH
 623: LD_INT 94
 625: PUSH
 626: EMPTY
 627: LIST
 628: LIST
 629: PUSH
 630: LD_INT 118
 632: PUSH
 633: LD_INT 104
 635: PUSH
 636: EMPTY
 637: LIST
 638: LIST
 639: PUSH
 640: LD_INT 71
 642: PUSH
 643: LD_INT 85
 645: PUSH
 646: EMPTY
 647: LIST
 648: LIST
 649: PUSH
 650: LD_INT 122
 652: PUSH
 653: LD_INT 98
 655: PUSH
 656: EMPTY
 657: LIST
 658: LIST
 659: PUSH
 660: LD_INT 62
 662: PUSH
 663: LD_INT 75
 665: PUSH
 666: EMPTY
 667: LIST
 668: LIST
 669: PUSH
 670: LD_INT 122
 672: PUSH
 673: LD_INT 89
 675: PUSH
 676: EMPTY
 677: LIST
 678: LIST
 679: PUSH
 680: LD_INT 56
 682: PUSH
 683: LD_INT 62
 685: PUSH
 686: EMPTY
 687: LIST
 688: LIST
 689: PUSH
 690: LD_INT 120
 692: PUSH
 693: LD_INT 76
 695: PUSH
 696: EMPTY
 697: LIST
 698: LIST
 699: PUSH
 700: LD_INT 54
 702: PUSH
 703: LD_INT 52
 705: PUSH
 706: EMPTY
 707: LIST
 708: LIST
 709: PUSH
 710: LD_INT 113
 712: PUSH
 713: LD_INT 62
 715: PUSH
 716: EMPTY
 717: LIST
 718: LIST
 719: PUSH
 720: LD_INT 55
 722: PUSH
 723: LD_INT 44
 725: PUSH
 726: EMPTY
 727: LIST
 728: LIST
 729: PUSH
 730: LD_INT 107
 732: PUSH
 733: LD_INT 55
 735: PUSH
 736: EMPTY
 737: LIST
 738: LIST
 739: PUSH
 740: LD_INT 59
 742: PUSH
 743: LD_INT 38
 745: PUSH
 746: EMPTY
 747: LIST
 748: LIST
 749: PUSH
 750: LD_INT 99
 752: PUSH
 753: LD_INT 48
 755: PUSH
 756: EMPTY
 757: LIST
 758: LIST
 759: PUSH
 760: LD_INT 66
 762: PUSH
 763: LD_INT 35
 765: PUSH
 766: EMPTY
 767: LIST
 768: LIST
 769: PUSH
 770: LD_INT 88
 772: PUSH
 773: LD_INT 42
 775: PUSH
 776: EMPTY
 777: LIST
 778: LIST
 779: PUSH
 780: LD_INT 76
 782: PUSH
 783: LD_INT 36
 785: PUSH
 786: EMPTY
 787: LIST
 788: LIST
 789: PUSH
 790: EMPTY
 791: LIST
 792: LIST
 793: LIST
 794: LIST
 795: LIST
 796: LIST
 797: LIST
 798: LIST
 799: LIST
 800: LIST
 801: LIST
 802: LIST
 803: LIST
 804: LIST
 805: LIST
 806: LIST
 807: LIST
 808: LIST
 809: LIST
 810: LIST
 811: PUSH
 812: EMPTY
 813: LIST
 814: LIST
 815: LIST
 816: PUSH
 817: LD_OWVAR 67
 821: ARRAY
 822: ST_TO_ADDR
// end ;
 823: LD_VAR 0 1
 827: RET
// function read_parameters ; var i ; begin
 828: LD_INT 0
 830: PPUSH
 831: PPUSH
// you := 3 ;
 832: LD_ADDR_EXP 4
 836: PUSH
 837: LD_INT 3
 839: ST_TO_ADDR
// ally := 6 ;
 840: LD_ADDR_EXP 5
 844: PUSH
 845: LD_INT 6
 847: ST_TO_ADDR
// arab := 2 ;
 848: LD_ADDR_EXP 6
 852: PUSH
 853: LD_INT 2
 855: ST_TO_ADDR
// ChangeSideFog ( you , ally ) ;
 856: LD_EXP 4
 860: PPUSH
 861: LD_EXP 5
 865: PPUSH
 866: CALL_OW 343
// SetAttitude ( ally , you , att_friend , true ) ;
 870: LD_EXP 5
 874: PPUSH
 875: LD_EXP 4
 879: PPUSH
 880: LD_INT 1
 882: PPUSH
 883: LD_INT 1
 885: PPUSH
 886: CALL_OW 80
// SetAttitude ( ally , arab , att_enemy , true ) ;
 890: LD_EXP 5
 894: PPUSH
 895: LD_EXP 6
 899: PPUSH
 900: LD_INT 2
 902: PPUSH
 903: LD_INT 1
 905: PPUSH
 906: CALL_OW 80
// SetAttitude ( you , arab , att_enemy , true ) ;
 910: LD_EXP 4
 914: PPUSH
 915: LD_EXP 6
 919: PPUSH
 920: LD_INT 2
 922: PPUSH
 923: LD_INT 1
 925: PPUSH
 926: CALL_OW 80
// trucks_diverted_count := 0 ;
 930: LD_ADDR_EXP 36
 934: PUSH
 935: LD_INT 0
 937: ST_TO_ADDR
// trucks_diverted_list := [ ] ;
 938: LD_ADDR_EXP 37
 942: PUSH
 943: EMPTY
 944: ST_TO_ADDR
// Disabled4 := false ;
 945: LD_ADDR_EXP 66
 949: PUSH
 950: LD_INT 0
 952: ST_TO_ADDR
// Disabled8 := false ;
 953: LD_ADDR_EXP 67
 957: PUSH
 958: LD_INT 0
 960: ST_TO_ADDR
// Disabled9 := false ;
 961: LD_ADDR_EXP 68
 965: PUSH
 966: LD_INT 0
 968: ST_TO_ADDR
// sm_pocet1_2 := 0 ;
 969: LD_ADDR_EXP 64
 973: PUSH
 974: LD_INT 0
 976: ST_TO_ADDR
// sm_pocet3 := 0 ;
 977: LD_ADDR_EXP 65
 981: PUSH
 982: LD_INT 0
 984: ST_TO_ADDR
// pocet := 0 ;
 985: LD_ADDR_EXP 46
 989: PUSH
 990: LD_INT 0
 992: ST_TO_ADDR
// konec := false ;
 993: LD_ADDR_EXP 43
 997: PUSH
 998: LD_INT 0
1000: ST_TO_ADDR
// BelkovFreed := LoadVariable ( belkov_saved , false ) ;
1001: LD_ADDR_EXP 45
1005: PUSH
1006: LD_STRING belkov_saved
1008: PPUSH
1009: LD_INT 0
1011: PPUSH
1012: CALL_OW 30
1016: ST_TO_ADDR
// case BelkovFreed of 0 :
1017: LD_EXP 45
1021: PUSH
1022: LD_INT 0
1024: DOUBLE
1025: EQUAL
1026: IFTRUE 1030
1028: GO 1041
1030: POP
// BelkovFreed := true ; 1 :
1031: LD_ADDR_EXP 45
1035: PUSH
1036: LD_INT 1
1038: ST_TO_ADDR
1039: GO 1061
1041: LD_INT 1
1043: DOUBLE
1044: EQUAL
1045: IFTRUE 1049
1047: GO 1060
1049: POP
// BelkovFreed := false ; end ;
1050: LD_ADDR_EXP 45
1054: PUSH
1055: LD_INT 0
1057: ST_TO_ADDR
1058: GO 1061
1060: POP
// RecklessAttack := LoadVariable ( stav_utoku , true ) ;
1061: LD_ADDR_EXP 44
1065: PUSH
1066: LD_STRING stav_utoku
1068: PPUSH
1069: LD_INT 1
1071: PPUSH
1072: CALL_OW 30
1076: ST_TO_ADDR
// case RecklessAttack of 1 :
1077: LD_EXP 44
1081: PUSH
1082: LD_INT 1
1084: DOUBLE
1085: EQUAL
1086: IFTRUE 1090
1088: GO 1101
1090: POP
// RecklessAttack := false ; 2 :
1091: LD_ADDR_EXP 44
1095: PUSH
1096: LD_INT 0
1098: ST_TO_ADDR
1099: GO 1140
1101: LD_INT 2
1103: DOUBLE
1104: EQUAL
1105: IFTRUE 1109
1107: GO 1120
1109: POP
// RecklessAttack := false ; 3 :
1110: LD_ADDR_EXP 44
1114: PUSH
1115: LD_INT 0
1117: ST_TO_ADDR
1118: GO 1140
1120: LD_INT 3
1122: DOUBLE
1123: EQUAL
1124: IFTRUE 1128
1126: GO 1139
1128: POP
// RecklessAttack := true ; end ;
1129: LD_ADDR_EXP 44
1133: PUSH
1134: LD_INT 1
1136: ST_TO_ADDR
1137: GO 1140
1139: POP
// lab_upgraded := false ;
1140: LD_ADDR_EXP 53
1144: PUSH
1145: LD_INT 0
1147: ST_TO_ADDR
// workshop_upgraded := false ;
1148: LD_ADDR_EXP 54
1152: PUSH
1153: LD_INT 0
1155: ST_TO_ADDR
// depot_build := false ;
1156: LD_ADDR_EXP 55
1160: PUSH
1161: LD_INT 0
1163: ST_TO_ADDR
// player_building_captured := false ;
1164: LD_ADDR_EXP 61
1168: PUSH
1169: LD_INT 0
1171: ST_TO_ADDR
// pocet_budov := 0 ;
1172: LD_ADDR_EXP 62
1176: PUSH
1177: LD_INT 0
1179: ST_TO_ADDR
// Burlak_saved := false ;
1180: LD_ADDR_EXP 1
1184: PUSH
1185: LD_INT 0
1187: ST_TO_ADDR
// Gaydar_saved := false ;
1188: LD_ADDR_EXP 2
1192: PUSH
1193: LD_INT 0
1195: ST_TO_ADDR
// end ;
1196: LD_VAR 0 1
1200: RET
// function nacti_osobu ( ident ) ; begin
1201: LD_INT 0
1203: PPUSH
// if TestCharacters ( ident ) then
1204: LD_VAR 0 1
1208: PPUSH
1209: CALL_OW 28
1213: IFFALSE 1264
// if CheckCharacterSet ( ident ) = 1 then
1215: LD_VAR 0 1
1219: PPUSH
1220: CALL_OW 29
1224: PUSH
1225: LD_INT 1
1227: EQUAL
1228: IFFALSE 1247
// result := CreateCharacter ( ident ) else
1230: LD_ADDR_VAR 0 2
1234: PUSH
1235: LD_VAR 0 1
1239: PPUSH
1240: CALL_OW 34
1244: ST_TO_ADDR
1245: GO 1262
// result := CreateCharacterSet ( ident ) else
1247: LD_ADDR_VAR 0 2
1251: PUSH
1252: LD_VAR 0 1
1256: PPUSH
1257: CALL_OW 31
1261: ST_TO_ADDR
1262: GO 1272
// result := 0 ;
1264: LD_ADDR_VAR 0 2
1268: PUSH
1269: LD_INT 0
1271: ST_TO_ADDR
// end ;
1272: LD_VAR 0 2
1276: RET
// function create_people ; var def , i , x , y , fff ; begin
1277: LD_INT 0
1279: PPUSH
1280: PPUSH
1281: PPUSH
1282: PPUSH
1283: PPUSH
1284: PPUSH
// other := [ ] ;
1285: LD_ADDR_EXP 12
1289: PUSH
1290: EMPTY
1291: ST_TO_ADDR
// uc_side := arab ;
1292: LD_ADDR_OWVAR 20
1296: PUSH
1297: LD_EXP 6
1301: ST_TO_ADDR
// uc_nation := nation_arabian ;
1302: LD_ADDR_OWVAR 21
1306: PUSH
1307: LD_INT 2
1309: ST_TO_ADDR
// Heike := NewCharacter ( Heike ) ;
1310: LD_ADDR_EXP 28
1314: PUSH
1315: LD_STRING Heike
1317: PPUSH
1318: CALL_OW 25
1322: ST_TO_ADDR
// uc_side := ally ;
1323: LD_ADDR_OWVAR 20
1327: PUSH
1328: LD_EXP 5
1332: ST_TO_ADDR
// uc_nation := nation_russian ;
1333: LD_ADDR_OWVAR 21
1337: PUSH
1338: LD_INT 3
1340: ST_TO_ADDR
// Gaydar := NewCharacter ( Gaydar ) ;
1341: LD_ADDR_EXP 27
1345: PUSH
1346: LD_STRING Gaydar
1348: PPUSH
1349: CALL_OW 25
1353: ST_TO_ADDR
// Kuzmov := NewCharacter ( Kuzmov ) ;
1354: LD_ADDR_EXP 19
1358: PUSH
1359: LD_STRING Kuzmov
1361: PPUSH
1362: CALL_OW 25
1366: ST_TO_ADDR
// uc_side := you ;
1367: LD_ADDR_OWVAR 20
1371: PUSH
1372: LD_EXP 4
1376: ST_TO_ADDR
// uc_nation := nation_russian ;
1377: LD_ADDR_OWVAR 21
1381: PUSH
1382: LD_INT 3
1384: ST_TO_ADDR
// Burlak := nacti_osobu ( Burlak ) ;
1385: LD_ADDR_EXP 14
1389: PUSH
1390: LD_STRING Burlak
1392: PPUSH
1393: CALL 1201 0 1
1397: ST_TO_ADDR
// Gnyevko := nacti_osobu ( Gnyevko ) ;
1398: LD_ADDR_EXP 15
1402: PUSH
1403: LD_STRING Gnyevko
1405: PPUSH
1406: CALL 1201 0 1
1410: ST_TO_ADDR
// Belkov := nacti_osobu ( Belkov ) ;
1411: LD_ADDR_EXP 17
1415: PUSH
1416: LD_STRING Belkov
1418: PPUSH
1419: CALL 1201 0 1
1423: ST_TO_ADDR
// Scholtze := nacti_osobu ( Scholtze ) ;
1424: LD_ADDR_EXP 18
1428: PUSH
1429: LD_STRING Scholtze
1431: PPUSH
1432: CALL 1201 0 1
1436: ST_TO_ADDR
// Kovalyuk := nacti_osobu ( Kovalyuk ) ;
1437: LD_ADDR_EXP 20
1441: PUSH
1442: LD_STRING Kovalyuk
1444: PPUSH
1445: CALL 1201 0 1
1449: ST_TO_ADDR
// Popov := NewCharacter ( Popov ) ;
1450: LD_ADDR_EXP 26
1454: PUSH
1455: LD_STRING Popov
1457: PPUSH
1458: CALL_OW 25
1462: ST_TO_ADDR
// Platonov := NewCharacter ( Platonov ) ;
1463: LD_ADDR_EXP 16
1467: PUSH
1468: LD_STRING Platonov
1470: PPUSH
1471: CALL_OW 25
1475: ST_TO_ADDR
// other := nacti_osobu ( survivors1 ) ;
1476: LD_ADDR_EXP 12
1480: PUSH
1481: LD_STRING survivors1
1483: PPUSH
1484: CALL 1201 0 1
1488: ST_TO_ADDR
// PrepareHuman ( sex_male , class_soldier , 2 ) ;
1489: LD_INT 1
1491: PPUSH
1492: LD_INT 1
1494: PPUSH
1495: LD_INT 2
1497: PPUSH
1498: CALL_OW 380
// hc_name :=  ;
1502: LD_ADDR_OWVAR 26
1506: PUSH
1507: LD_STRING 
1509: ST_TO_ADDR
// Soldier1 := CreateHuman ;
1510: LD_ADDR_EXP 22
1514: PUSH
1515: CALL_OW 44
1519: ST_TO_ADDR
// PrepareHuman ( sex_male , class_soldier , 3 ) ;
1520: LD_INT 1
1522: PPUSH
1523: LD_INT 1
1525: PPUSH
1526: LD_INT 3
1528: PPUSH
1529: CALL_OW 380
// hc_name :=  ;
1533: LD_ADDR_OWVAR 26
1537: PUSH
1538: LD_STRING 
1540: ST_TO_ADDR
// SoldierX := CreateHuman ;
1541: LD_ADDR_EXP 21
1545: PUSH
1546: CALL_OW 44
1550: ST_TO_ADDR
// PrepareHuman ( sex_male , class_engineer , 3 ) ;
1551: LD_INT 1
1553: PPUSH
1554: LD_INT 2
1556: PPUSH
1557: LD_INT 3
1559: PPUSH
1560: CALL_OW 380
// hc_name :=  ;
1564: LD_ADDR_OWVAR 26
1568: PUSH
1569: LD_STRING 
1571: ST_TO_ADDR
// Scientist1 := CreateHuman ;
1572: LD_ADDR_EXP 23
1576: PUSH
1577: CALL_OW 44
1581: ST_TO_ADDR
// PrepareHuman ( sex_male , class_engineer , 2 ) ;
1582: LD_INT 1
1584: PPUSH
1585: LD_INT 2
1587: PPUSH
1588: LD_INT 2
1590: PPUSH
1591: CALL_OW 380
// hc_name :=  ;
1595: LD_ADDR_OWVAR 26
1599: PUSH
1600: LD_STRING 
1602: ST_TO_ADDR
// Engineer1 := CreateHuman ;
1603: LD_ADDR_EXP 24
1607: PUSH
1608: CALL_OW 44
1612: ST_TO_ADDR
// PrepareHuman ( sex_male , class_mechanic , 3 ) ;
1613: LD_INT 1
1615: PPUSH
1616: LD_INT 3
1618: PPUSH
1619: LD_INT 3
1621: PPUSH
1622: CALL_OW 380
// hc_name :=  ;
1626: LD_ADDR_OWVAR 26
1630: PUSH
1631: LD_STRING 
1633: ST_TO_ADDR
// Mechanic1 := CreateHuman ;
1634: LD_ADDR_EXP 25
1638: PUSH
1639: CALL_OW 44
1643: ST_TO_ADDR
// fff := ( [ Burlak , Gnyevko , Belkov , Scholtze , Kuzmov , Kovalyuk , Soldier1 , Scientist1 , Engineer1 , Mechanic1 ] union other ) diff [ 0 ] ;
1644: LD_ADDR_VAR 0 6
1648: PUSH
1649: LD_EXP 14
1653: PUSH
1654: LD_EXP 15
1658: PUSH
1659: LD_EXP 17
1663: PUSH
1664: LD_EXP 18
1668: PUSH
1669: LD_EXP 19
1673: PUSH
1674: LD_EXP 20
1678: PUSH
1679: LD_EXP 22
1683: PUSH
1684: LD_EXP 23
1688: PUSH
1689: LD_EXP 24
1693: PUSH
1694: LD_EXP 25
1698: PUSH
1699: EMPTY
1700: LIST
1701: LIST
1702: LIST
1703: LIST
1704: LIST
1705: LIST
1706: LIST
1707: LIST
1708: LIST
1709: LIST
1710: PUSH
1711: LD_EXP 12
1715: UNION
1716: PUSH
1717: LD_INT 0
1719: PUSH
1720: EMPTY
1721: LIST
1722: DIFF
1723: ST_TO_ADDR
// if fff < 14 then
1724: LD_VAR 0 6
1728: PUSH
1729: LD_INT 14
1731: LESS
1732: IFFALSE 1868
// for i := 1 to 14 - fff do
1734: LD_ADDR_VAR 0 3
1738: PUSH
1739: DOUBLE
1740: LD_INT 1
1742: DEC
1743: ST_TO_ADDR
1744: LD_INT 14
1746: PUSH
1747: LD_VAR 0 6
1751: MINUS
1752: PUSH
1753: FOR_TO
1754: IFFALSE 1866
// begin case Rand ( 1 , 3 ) of 1 :
1756: LD_INT 1
1758: PPUSH
1759: LD_INT 3
1761: PPUSH
1762: CALL_OW 12
1766: PUSH
1767: LD_INT 1
1769: DOUBLE
1770: EQUAL
1771: IFTRUE 1775
1773: GO 1791
1775: POP
// PrepareHuman ( 0 , class_mechanic , 2 ) ; 2 :
1776: LD_INT 0
1778: PPUSH
1779: LD_INT 3
1781: PPUSH
1782: LD_INT 2
1784: PPUSH
1785: CALL_OW 380
1789: GO 1840
1791: LD_INT 2
1793: DOUBLE
1794: EQUAL
1795: IFTRUE 1799
1797: GO 1815
1799: POP
// PrepareHuman ( 0 , class_engineer , 2 ) ; 3 :
1800: LD_INT 0
1802: PPUSH
1803: LD_INT 2
1805: PPUSH
1806: LD_INT 2
1808: PPUSH
1809: CALL_OW 380
1813: GO 1840
1815: LD_INT 3
1817: DOUBLE
1818: EQUAL
1819: IFTRUE 1823
1821: GO 1839
1823: POP
// PrepareHuman ( 0 , class_soldier , 2 ) ; end ;
1824: LD_INT 0
1826: PPUSH
1827: LD_INT 1
1829: PPUSH
1830: LD_INT 2
1832: PPUSH
1833: CALL_OW 380
1837: GO 1840
1839: POP
// hc_name :=  ;
1840: LD_ADDR_OWVAR 26
1844: PUSH
1845: LD_STRING 
1847: ST_TO_ADDR
// new := new ^ CreateHuman ;
1848: LD_ADDR_EXP 29
1852: PUSH
1853: LD_EXP 29
1857: PUSH
1858: CALL_OW 44
1862: ADD
1863: ST_TO_ADDR
// end ;
1864: GO 1753
1866: POP
1867: POP
// for un in ( ( [ Popov , Burlak , Gnyevko , Belkov , Scholtze , Kovalyuk , Soldier1 , Scientist1 , Engineer1 , Mechanic1 ] union other ) union new ) diff [ 0 ] do
1868: LD_ADDR_LOC 3
1872: PUSH
1873: LD_EXP 26
1877: PUSH
1878: LD_EXP 14
1882: PUSH
1883: LD_EXP 15
1887: PUSH
1888: LD_EXP 17
1892: PUSH
1893: LD_EXP 18
1897: PUSH
1898: LD_EXP 20
1902: PUSH
1903: LD_EXP 22
1907: PUSH
1908: LD_EXP 23
1912: PUSH
1913: LD_EXP 24
1917: PUSH
1918: LD_EXP 25
1922: PUSH
1923: EMPTY
1924: LIST
1925: LIST
1926: LIST
1927: LIST
1928: LIST
1929: LIST
1930: LIST
1931: LIST
1932: LIST
1933: LIST
1934: PUSH
1935: LD_EXP 12
1939: UNION
1940: PUSH
1941: LD_EXP 29
1945: UNION
1946: PUSH
1947: LD_INT 0
1949: PUSH
1950: EMPTY
1951: LIST
1952: DIFF
1953: PUSH
1954: FOR_IN
1955: IFFALSE 1980
// PlaceUnitXYR ( un , 102 , 3 , 7 , false ) ;
1957: LD_LOC 3
1961: PPUSH
1962: LD_INT 102
1964: PPUSH
1965: LD_INT 3
1967: PPUSH
1968: LD_INT 7
1970: PPUSH
1971: LD_INT 0
1973: PPUSH
1974: CALL_OW 50
1978: GO 1954
1980: POP
1981: POP
// PlaceUnitXYR ( Kuzmov , 92 , 75 , 10 , false ) ;
1982: LD_EXP 19
1986: PPUSH
1987: LD_INT 92
1989: PPUSH
1990: LD_INT 75
1992: PPUSH
1993: LD_INT 10
1995: PPUSH
1996: LD_INT 0
1998: PPUSH
1999: CALL_OW 50
// end ;
2003: LD_VAR 0 1
2007: RET
// function make_alliance ; var i , pom ; begin
2008: LD_INT 0
2010: PPUSH
2011: PPUSH
2012: PPUSH
// whole_units := ( ( [ Popov , Burlak , Gnyevko , Belkov , Scholtze , Kovalyuk , Soldier1 , Scientist1 , Engineer1 , Mechanic1 ] union other ) union new ) diff [ 0 ] ;
2013: LD_ADDR_LOC 4
2017: PUSH
2018: LD_EXP 26
2022: PUSH
2023: LD_EXP 14
2027: PUSH
2028: LD_EXP 15
2032: PUSH
2033: LD_EXP 17
2037: PUSH
2038: LD_EXP 18
2042: PUSH
2043: LD_EXP 20
2047: PUSH
2048: LD_EXP 22
2052: PUSH
2053: LD_EXP 23
2057: PUSH
2058: LD_EXP 24
2062: PUSH
2063: LD_EXP 25
2067: PUSH
2068: EMPTY
2069: LIST
2070: LIST
2071: LIST
2072: LIST
2073: LIST
2074: LIST
2075: LIST
2076: LIST
2077: LIST
2078: LIST
2079: PUSH
2080: LD_EXP 12
2084: UNION
2085: PUSH
2086: LD_EXP 29
2090: UNION
2091: PUSH
2092: LD_INT 0
2094: PUSH
2095: EMPTY
2096: LIST
2097: DIFF
2098: ST_TO_ADDR
// alliance := whole_units diff player_units ;
2099: LD_ADDR_EXP 13
2103: PUSH
2104: LD_LOC 4
2108: PUSH
2109: LD_EXP 30
2113: DIFF
2114: ST_TO_ADDR
// SetSide ( alliance , ally ) ;
2115: LD_EXP 13
2119: PPUSH
2120: LD_EXP 5
2124: PPUSH
2125: CALL_OW 235
// end ;
2129: LD_VAR 0 1
2133: RET
// function alliance_go_away ; var points , waypoints ; begin
2134: LD_INT 0
2136: PPUSH
2137: PPUSH
2138: PPUSH
// waypoints := [ [ 98 , 6 ] , [ 94 , 9 ] , [ 90 , 14 ] , [ 87 , 17 ] , [ 81 , 18 ] , [ 80 , 23 ] , [ 86 , 34 ] , [ 96 , 45 ] , [ 108 , 56 ] , [ 113 , 62 ] , [ 119 , 73 ] , [ 121 , 79 ] , [ 122 , 89 ] , [ 123 , 98 ] , [ 122 , 108 ] , [ 115 , 113 ] , [ 91 , 114 ] , [ 73 , 113 ] , [ 71 , 115 ] , [ 71 , 129 ] , [ 73 , 138 ] ] ;
2139: LD_ADDR_VAR 0 3
2143: PUSH
2144: LD_INT 98
2146: PUSH
2147: LD_INT 6
2149: PUSH
2150: EMPTY
2151: LIST
2152: LIST
2153: PUSH
2154: LD_INT 94
2156: PUSH
2157: LD_INT 9
2159: PUSH
2160: EMPTY
2161: LIST
2162: LIST
2163: PUSH
2164: LD_INT 90
2166: PUSH
2167: LD_INT 14
2169: PUSH
2170: EMPTY
2171: LIST
2172: LIST
2173: PUSH
2174: LD_INT 87
2176: PUSH
2177: LD_INT 17
2179: PUSH
2180: EMPTY
2181: LIST
2182: LIST
2183: PUSH
2184: LD_INT 81
2186: PUSH
2187: LD_INT 18
2189: PUSH
2190: EMPTY
2191: LIST
2192: LIST
2193: PUSH
2194: LD_INT 80
2196: PUSH
2197: LD_INT 23
2199: PUSH
2200: EMPTY
2201: LIST
2202: LIST
2203: PUSH
2204: LD_INT 86
2206: PUSH
2207: LD_INT 34
2209: PUSH
2210: EMPTY
2211: LIST
2212: LIST
2213: PUSH
2214: LD_INT 96
2216: PUSH
2217: LD_INT 45
2219: PUSH
2220: EMPTY
2221: LIST
2222: LIST
2223: PUSH
2224: LD_INT 108
2226: PUSH
2227: LD_INT 56
2229: PUSH
2230: EMPTY
2231: LIST
2232: LIST
2233: PUSH
2234: LD_INT 113
2236: PUSH
2237: LD_INT 62
2239: PUSH
2240: EMPTY
2241: LIST
2242: LIST
2243: PUSH
2244: LD_INT 119
2246: PUSH
2247: LD_INT 73
2249: PUSH
2250: EMPTY
2251: LIST
2252: LIST
2253: PUSH
2254: LD_INT 121
2256: PUSH
2257: LD_INT 79
2259: PUSH
2260: EMPTY
2261: LIST
2262: LIST
2263: PUSH
2264: LD_INT 122
2266: PUSH
2267: LD_INT 89
2269: PUSH
2270: EMPTY
2271: LIST
2272: LIST
2273: PUSH
2274: LD_INT 123
2276: PUSH
2277: LD_INT 98
2279: PUSH
2280: EMPTY
2281: LIST
2282: LIST
2283: PUSH
2284: LD_INT 122
2286: PUSH
2287: LD_INT 108
2289: PUSH
2290: EMPTY
2291: LIST
2292: LIST
2293: PUSH
2294: LD_INT 115
2296: PUSH
2297: LD_INT 113
2299: PUSH
2300: EMPTY
2301: LIST
2302: LIST
2303: PUSH
2304: LD_INT 91
2306: PUSH
2307: LD_INT 114
2309: PUSH
2310: EMPTY
2311: LIST
2312: LIST
2313: PUSH
2314: LD_INT 73
2316: PUSH
2317: LD_INT 113
2319: PUSH
2320: EMPTY
2321: LIST
2322: LIST
2323: PUSH
2324: LD_INT 71
2326: PUSH
2327: LD_INT 115
2329: PUSH
2330: EMPTY
2331: LIST
2332: LIST
2333: PUSH
2334: LD_INT 71
2336: PUSH
2337: LD_INT 129
2339: PUSH
2340: EMPTY
2341: LIST
2342: LIST
2343: PUSH
2344: LD_INT 73
2346: PUSH
2347: LD_INT 138
2349: PUSH
2350: EMPTY
2351: LIST
2352: LIST
2353: PUSH
2354: EMPTY
2355: LIST
2356: LIST
2357: LIST
2358: LIST
2359: LIST
2360: LIST
2361: LIST
2362: LIST
2363: LIST
2364: LIST
2365: LIST
2366: LIST
2367: LIST
2368: LIST
2369: LIST
2370: LIST
2371: LIST
2372: LIST
2373: LIST
2374: LIST
2375: LIST
2376: ST_TO_ADDR
// for points in waypoints do
2377: LD_ADDR_VAR 0 2
2381: PUSH
2382: LD_VAR 0 3
2386: PUSH
2387: FOR_IN
2388: IFFALSE 2419
// AddComMoveXY ( alliance , points [ 1 ] , points [ 2 ] ) ;
2390: LD_EXP 13
2394: PPUSH
2395: LD_VAR 0 2
2399: PUSH
2400: LD_INT 1
2402: ARRAY
2403: PPUSH
2404: LD_VAR 0 2
2408: PUSH
2409: LD_INT 2
2411: ARRAY
2412: PPUSH
2413: CALL_OW 171
2417: GO 2387
2419: POP
2420: POP
// end ;
2421: LD_VAR 0 1
2425: RET
// function select_people ; var units ; begin
2426: LD_INT 0
2428: PPUSH
2429: PPUSH
// units := [ sel_hired , sel_not_changeable , sel_change_class , Burlak ] ^ [ sel_not_hired , sel_not_changeable , sel_dont_change_class , Popov ] ^ [ sel_not_hired , sel_changeable , sel_change_class , Scholtze , Gnyevko , Belkov , Kovalyuk , Soldier1 , Scientist1 , Engineer1 , Mechanic1 ] ^ new ^ other ;
2430: LD_ADDR_VAR 0 2
2434: PUSH
2435: LD_INT -1
2437: PUSH
2438: LD_INT -4
2440: PUSH
2441: LD_INT -5
2443: PUSH
2444: LD_EXP 14
2448: PUSH
2449: EMPTY
2450: LIST
2451: LIST
2452: LIST
2453: LIST
2454: PUSH
2455: LD_INT -2
2457: PUSH
2458: LD_INT -4
2460: PUSH
2461: LD_INT -6
2463: PUSH
2464: LD_EXP 26
2468: PUSH
2469: EMPTY
2470: LIST
2471: LIST
2472: LIST
2473: LIST
2474: ADD
2475: PUSH
2476: LD_INT -2
2478: PUSH
2479: LD_INT -3
2481: PUSH
2482: LD_INT -5
2484: PUSH
2485: LD_EXP 18
2489: PUSH
2490: LD_EXP 15
2494: PUSH
2495: LD_EXP 17
2499: PUSH
2500: LD_EXP 20
2504: PUSH
2505: LD_EXP 22
2509: PUSH
2510: LD_EXP 23
2514: PUSH
2515: LD_EXP 24
2519: PUSH
2520: LD_EXP 25
2524: PUSH
2525: EMPTY
2526: LIST
2527: LIST
2528: LIST
2529: LIST
2530: LIST
2531: LIST
2532: LIST
2533: LIST
2534: LIST
2535: LIST
2536: LIST
2537: ADD
2538: PUSH
2539: LD_EXP 29
2543: ADD
2544: PUSH
2545: LD_EXP 12
2549: ADD
2550: ST_TO_ADDR
// player_units := [ Burlak , Kuzmov ] union CharacterSelection ( Select 8 characters to go with you , 8 , 8 , units , [ class_soldier , class_mechanic , [ class_engineer , 1 ] , class_scientistic ] ) ;
2551: LD_ADDR_EXP 30
2555: PUSH
2556: LD_EXP 14
2560: PUSH
2561: LD_EXP 19
2565: PUSH
2566: EMPTY
2567: LIST
2568: LIST
2569: PUSH
2570: LD_STRING Select 8 characters to go with you
2572: PPUSH
2573: LD_INT 8
2575: PPUSH
2576: LD_INT 8
2578: PPUSH
2579: LD_VAR 0 2
2583: PPUSH
2584: LD_INT 1
2586: PUSH
2587: LD_INT 3
2589: PUSH
2590: LD_INT 2
2592: PUSH
2593: LD_INT 1
2595: PUSH
2596: EMPTY
2597: LIST
2598: LIST
2599: PUSH
2600: LD_INT 4
2602: PUSH
2603: EMPTY
2604: LIST
2605: LIST
2606: LIST
2607: LIST
2608: PPUSH
2609: CALL_OW 42
2613: UNION
2614: ST_TO_ADDR
// end ;
2615: LD_VAR 0 1
2619: RET
// export function create_gaydar ; begin
2620: LD_INT 0
2622: PPUSH
// PlaceUnitXYR ( Gaydar , 17 , 1 , 3 , false ) ;
2623: LD_EXP 27
2627: PPUSH
2628: LD_INT 17
2630: PPUSH
2631: LD_INT 1
2633: PPUSH
2634: LD_INT 3
2636: PPUSH
2637: LD_INT 0
2639: PPUSH
2640: CALL_OW 50
// ComMoveXY ( Gaydar , 23 , 10 ) ;
2644: LD_EXP 27
2648: PPUSH
2649: LD_INT 23
2651: PPUSH
2652: LD_INT 10
2654: PPUSH
2655: CALL_OW 111
// enable ( 15 ) ;
2659: LD_INT 15
2661: ENABLE_MARKED
// Dialogue10 ;
2662: CALL 7518 0 0
// repeat Wait ( 0 0$1 ) ;
2666: LD_INT 35
2668: PPUSH
2669: CALL_OW 67
// until Attacks ( Gaydar ) = 0 ;
2673: LD_EXP 27
2677: PPUSH
2678: CALL_OW 320
2682: PUSH
2683: LD_INT 0
2685: EQUAL
2686: IFFALSE 2666
// ComMoveXY ( Gaydar , 27 , 16 ) ;
2688: LD_EXP 27
2692: PPUSH
2693: LD_INT 27
2695: PPUSH
2696: LD_INT 16
2698: PPUSH
2699: CALL_OW 111
// Wait ( 0 0$30 ) ;
2703: LD_INT 1050
2705: PPUSH
2706: CALL_OW 67
// repeat Wait ( 0 0$1 ) ;
2710: LD_INT 35
2712: PPUSH
2713: CALL_OW 67
// until Attacks ( Gaydar ) = 0 ;
2717: LD_EXP 27
2721: PPUSH
2722: CALL_OW 320
2726: PUSH
2727: LD_INT 0
2729: EQUAL
2730: IFFALSE 2710
// ComMoveXY ( Gaydar , 33 , 30 ) ;
2732: LD_EXP 27
2736: PPUSH
2737: LD_INT 33
2739: PPUSH
2740: LD_INT 30
2742: PPUSH
2743: CALL_OW 111
// Wait ( 0 0$30 ) ;
2747: LD_INT 1050
2749: PPUSH
2750: CALL_OW 67
// repeat Wait ( 0 0$1 ) ;
2754: LD_INT 35
2756: PPUSH
2757: CALL_OW 67
// until Attacks ( Gaydar ) = 0 ;
2761: LD_EXP 27
2765: PPUSH
2766: CALL_OW 320
2770: PUSH
2771: LD_INT 0
2773: EQUAL
2774: IFFALSE 2754
// ComMoveXY ( Gaydar , 27 , 47 ) ;
2776: LD_EXP 27
2780: PPUSH
2781: LD_INT 27
2783: PPUSH
2784: LD_INT 47
2786: PPUSH
2787: CALL_OW 111
// end ;
2791: LD_VAR 0 1
2795: RET
// starting begin FogOff ( false ) ;
2796: LD_INT 0
2798: PPUSH
2799: CALL_OW 344
// InitBc ;
2803: CALL_OW 21
// InitHc ;
2807: CALL_OW 19
// InitUc ;
2811: CALL_OW 18
// InitVc ;
2815: CALL_OW 20
// IngameOn ;
2819: CALL_OW 8
// disable ( 2 ) ;
2823: LD_INT 2
2825: DISABLE_MARKED
// disable ( 3 ) ;
2826: LD_INT 3
2828: DISABLE_MARKED
// disable ( 4 ) ;
2829: LD_INT 4
2831: DISABLE_MARKED
// disable ( 5 ) ;
2832: LD_INT 5
2834: DISABLE_MARKED
// disable ( 6 ) ;
2835: LD_INT 6
2837: DISABLE_MARKED
// disable ( 7 ) ;
2838: LD_INT 7
2840: DISABLE_MARKED
// disable ( 8 ) ;
2841: LD_INT 8
2843: DISABLE_MARKED
// disable ( 9 ) ;
2844: LD_INT 9
2846: DISABLE_MARKED
// disable ( 10 ) ;
2847: LD_INT 10
2849: DISABLE_MARKED
// disable ( 11 ) ;
2850: LD_INT 11
2852: DISABLE_MARKED
// disable ( 12 ) ;
2853: LD_INT 12
2855: DISABLE_MARKED
// disable ( 13 ) ;
2856: LD_INT 13
2858: DISABLE_MARKED
// disable ( 14 ) ;
2859: LD_INT 14
2861: DISABLE_MARKED
// disable ( 15 ) ;
2862: LD_INT 15
2864: DISABLE_MARKED
// disable ( 16 ) ;
2865: LD_INT 16
2867: DISABLE_MARKED
// disable ( 17 ) ;
2868: LD_INT 17
2870: DISABLE_MARKED
// disable ( 18 ) ;
2871: LD_INT 18
2873: DISABLE_MARKED
// disable ( 19 ) ;
2874: LD_INT 19
2876: DISABLE_MARKED
// Randomize ;
2877: CALL_OW 10
// RandomizeAll ;
2881: CALL_OW 11
// set_difficulty ;
2885: CALL 0 0 0
// read_parameters ;
2889: CALL 828 0 0
// prepare_convoy ;
2893: CALL 7819 0 0
// prepare_arabian_attack ;
2897: CALL 11697 0 0
// prepare_small_arabian_attack ;
2901: CALL 14097 0 0
// create_people ;
2905: CALL 1277 0 0
// CenterNowOnXY ( 102 , 3 ) ;
2909: LD_INT 102
2911: PPUSH
2912: LD_INT 3
2914: PPUSH
2915: CALL_OW 86
// Wait ( 0 0$2 ) ;
2919: LD_INT 70
2921: PPUSH
2922: CALL_OW 67
// Dialogue1 ;
2926: CALL 5106 0 0
// select_people ;
2930: CALL 2426 0 0
// ChangeMissionObjectives ( M1 ) ;
2934: LD_STRING M1
2936: PPUSH
2937: CALL_OW 337
// make_alliance ;
2941: CALL 2008 0 0
// SaveForQuickRestart ;
2945: CALL_OW 22
// IngameOff ;
2949: CALL_OW 9
// alliance_go_away ;
2953: CALL 2134 0 0
// end ;
2957: END
// export function konec_mise ; var pom , pom1 , i , all_people , drv , filter ; begin
2958: LD_INT 0
2960: PPUSH
2961: PPUSH
2962: PPUSH
2963: PPUSH
2964: PPUSH
2965: PPUSH
2966: PPUSH
// Wait ( 0 0$1 ) ;
2967: LD_INT 35
2969: PPUSH
2970: CALL_OW 67
// gained_medals := [ ] ;
2974: LD_ADDR_OWVAR 61
2978: PUSH
2979: EMPTY
2980: ST_TO_ADDR
// missing_medals := [ ] ;
2981: LD_ADDR_OWVAR 62
2985: PUSH
2986: EMPTY
2987: ST_TO_ADDR
// saved_player_units := UnitFilter ( saved_player_units , [ f_not , [ f_or , [ f_class , class_apeman_engineer ] , [ f_class , class_apeman_soldier ] ] ] ) ;
2988: LD_ADDR_EXP 31
2992: PUSH
2993: LD_EXP 31
2997: PPUSH
2998: LD_INT 3
3000: PUSH
3001: LD_INT 2
3003: PUSH
3004: LD_INT 25
3006: PUSH
3007: LD_INT 16
3009: PUSH
3010: EMPTY
3011: LIST
3012: LIST
3013: PUSH
3014: LD_INT 25
3016: PUSH
3017: LD_INT 15
3019: PUSH
3020: EMPTY
3021: LIST
3022: LIST
3023: PUSH
3024: EMPTY
3025: LIST
3026: LIST
3027: LIST
3028: PUSH
3029: EMPTY
3030: LIST
3031: LIST
3032: PPUSH
3033: CALL_OW 72
3037: ST_TO_ADDR
// if ( 0 + saved_player_units ) >= 9 then
3038: LD_INT 0
3040: PUSH
3041: LD_EXP 31
3045: PLUS
3046: PUSH
3047: LD_INT 9
3049: GREATEREQUAL
3050: IFFALSE 3064
// AddMedal ( LittleLosses , 1 ) else
3052: LD_STRING LittleLosses
3054: PPUSH
3055: LD_INT 1
3057: PPUSH
3058: CALL_OW 101
3062: GO 3075
// AddMedal ( LittleLosses , - 1 ) ;
3064: LD_STRING LittleLosses
3066: PPUSH
3067: LD_INT 1
3069: NEG
3070: PPUSH
3071: CALL_OW 101
// if ar_killed >= waypointsEND - 3 then
3075: LD_EXP 50
3079: PUSH
3080: LD_EXP 63
3084: PUSH
3085: LD_INT 3
3087: MINUS
3088: GREATEREQUAL
3089: IFFALSE 3103
// AddMedal ( EnemyLosses , 1 ) else
3091: LD_STRING EnemyLosses
3093: PPUSH
3094: LD_INT 1
3096: PPUSH
3097: CALL_OW 101
3101: GO 3114
// AddMedal ( EnemyLosses , - 1 ) ;
3103: LD_STRING EnemyLosses
3105: PPUSH
3106: LD_INT 1
3108: NEG
3109: PPUSH
3110: CALL_OW 101
// filter := FilterAllUnits ( [ [ f_type , unit_building ] , [ f_not , [ f_or , [ f_btype , b_oil_power ] , [ f_btype , b_oil_mine ] , [ f_btype , b_bunker ] ] ] ] ) ;
3114: LD_ADDR_VAR 0 7
3118: PUSH
3119: LD_INT 21
3121: PUSH
3122: LD_INT 3
3124: PUSH
3125: EMPTY
3126: LIST
3127: LIST
3128: PUSH
3129: LD_INT 3
3131: PUSH
3132: LD_INT 2
3134: PUSH
3135: LD_INT 30
3137: PUSH
3138: LD_INT 26
3140: PUSH
3141: EMPTY
3142: LIST
3143: LIST
3144: PUSH
3145: LD_INT 30
3147: PUSH
3148: LD_INT 29
3150: PUSH
3151: EMPTY
3152: LIST
3153: LIST
3154: PUSH
3155: LD_INT 30
3157: PUSH
3158: LD_INT 32
3160: PUSH
3161: EMPTY
3162: LIST
3163: LIST
3164: PUSH
3165: EMPTY
3166: LIST
3167: LIST
3168: LIST
3169: LIST
3170: PUSH
3171: EMPTY
3172: LIST
3173: LIST
3174: PUSH
3175: EMPTY
3176: LIST
3177: LIST
3178: PPUSH
3179: CALL_OW 69
3183: ST_TO_ADDR
// if filter = 0 then
3184: LD_VAR 0 7
3188: PUSH
3189: LD_INT 0
3191: EQUAL
3192: IFFALSE 3206
// AddMedal ( Dismantle , 1 ) else
3194: LD_STRING Dismantle
3196: PPUSH
3197: LD_INT 1
3199: PPUSH
3200: CALL_OW 101
3204: GO 3217
// AddMedal ( Dismantle , - 1 ) ;
3206: LD_STRING Dismantle
3208: PPUSH
3209: LD_INT 1
3211: NEG
3212: PPUSH
3213: CALL_OW 101
// GiveMedals ( Main ) ;
3217: LD_STRING Main
3219: PPUSH
3220: CALL_OW 102
// RewardPeople ( saved_player_units ) ;
3224: LD_EXP 31
3228: PPUSH
3229: CALL_OW 43
// SaveCharacters ( Burlak , Burlak ) ;
3233: LD_EXP 14
3237: PPUSH
3238: LD_STRING Burlak
3240: PPUSH
3241: CALL_OW 38
// SaveCharacters ( Gnyevko , Gnyevko ) ;
3245: LD_EXP 15
3249: PPUSH
3250: LD_STRING Gnyevko
3252: PPUSH
3253: CALL_OW 38
// SaveCharacters ( Kovalyuk , Kovalyuk ) ;
3257: LD_EXP 20
3261: PPUSH
3262: LD_STRING Kovalyuk
3264: PPUSH
3265: CALL_OW 38
// SaveCharacters ( Belkov , Belkov ) ;
3269: LD_EXP 17
3273: PPUSH
3274: LD_STRING Belkov
3276: PPUSH
3277: CALL_OW 38
// SaveCharacters ( Scholtze , Scholtze ) ;
3281: LD_EXP 18
3285: PPUSH
3286: LD_STRING Scholtze
3288: PPUSH
3289: CALL_OW 38
// SaveCharacters ( Kuzmov , Kuzmov ) ;
3293: LD_EXP 19
3297: PPUSH
3298: LD_STRING Kuzmov
3300: PPUSH
3301: CALL_OW 38
// SaveCharacters ( Gaydar , Gaydar ) ;
3305: LD_EXP 27
3309: PPUSH
3310: LD_STRING Gaydar
3312: PPUSH
3313: CALL_OW 38
// SaveCharacters ( ( other union new ) diff [ Burlak , Belkov , Gnyevko , Platonov , Kovalyuk , Popov , Scholtze , Kuzmov , Gaydar ] , survivors1 ) ;
3317: LD_EXP 12
3321: PUSH
3322: LD_EXP 29
3326: UNION
3327: PUSH
3328: LD_EXP 14
3332: PUSH
3333: LD_EXP 17
3337: PUSH
3338: LD_EXP 15
3342: PUSH
3343: LD_EXP 16
3347: PUSH
3348: LD_EXP 20
3352: PUSH
3353: LD_EXP 26
3357: PUSH
3358: LD_EXP 18
3362: PUSH
3363: LD_EXP 19
3367: PUSH
3368: LD_EXP 27
3372: PUSH
3373: EMPTY
3374: LIST
3375: LIST
3376: LIST
3377: LIST
3378: LIST
3379: LIST
3380: LIST
3381: LIST
3382: LIST
3383: DIFF
3384: PPUSH
3385: LD_STRING survivors1
3387: PPUSH
3388: CALL_OW 38
// YouWin ;
3392: CALL_OW 103
// exit ;
3396: GO 3398
// end ; end_of_file
3398: LD_VAR 0 1
3402: RET
// every 0 0$0.8 do var qqq , i , un , my_filter ;
3403: GO 3405
3405: DISABLE
3406: LD_INT 0
3408: PPUSH
3409: PPUSH
3410: PPUSH
3411: PPUSH
// begin if konec then
3412: LD_EXP 43
3416: IFFALSE 3504
// my_filter := FilterUnitsInArea ( ExitArea , [ [ f_or , [ f_side , you ] , [ f_side , ally ] ] , [ f_not , [ f_or , [ f_class , class_apeman_engineer ] , [ f_class , class_apeman_soldier ] ] ] ] ) else
3418: LD_ADDR_VAR 0 4
3422: PUSH
3423: LD_INT 1
3425: PPUSH
3426: LD_INT 2
3428: PUSH
3429: LD_INT 22
3431: PUSH
3432: LD_EXP 4
3436: PUSH
3437: EMPTY
3438: LIST
3439: LIST
3440: PUSH
3441: LD_INT 22
3443: PUSH
3444: LD_EXP 5
3448: PUSH
3449: EMPTY
3450: LIST
3451: LIST
3452: PUSH
3453: EMPTY
3454: LIST
3455: LIST
3456: LIST
3457: PUSH
3458: LD_INT 3
3460: PUSH
3461: LD_INT 2
3463: PUSH
3464: LD_INT 25
3466: PUSH
3467: LD_INT 16
3469: PUSH
3470: EMPTY
3471: LIST
3472: LIST
3473: PUSH
3474: LD_INT 25
3476: PUSH
3477: LD_INT 15
3479: PUSH
3480: EMPTY
3481: LIST
3482: LIST
3483: PUSH
3484: EMPTY
3485: LIST
3486: LIST
3487: LIST
3488: PUSH
3489: EMPTY
3490: LIST
3491: LIST
3492: PUSH
3493: EMPTY
3494: LIST
3495: LIST
3496: PPUSH
3497: CALL_OW 70
3501: ST_TO_ADDR
3502: GO 3529
// my_filter := FilterUnitsInArea ( ExitArea , [ f_side , ally ] ) ;
3504: LD_ADDR_VAR 0 4
3508: PUSH
3509: LD_INT 1
3511: PPUSH
3512: LD_INT 22
3514: PUSH
3515: LD_EXP 5
3519: PUSH
3520: EMPTY
3521: LIST
3522: LIST
3523: PPUSH
3524: CALL_OW 70
3528: ST_TO_ADDR
// if my_filter + 0 > 0 then
3529: LD_VAR 0 4
3533: PUSH
3534: LD_INT 0
3536: PLUS
3537: PUSH
3538: LD_INT 0
3540: GREATER
3541: IFFALSE 3814
// for un in my_filter do
3543: LD_ADDR_VAR 0 3
3547: PUSH
3548: LD_VAR 0 4
3552: PUSH
3553: FOR_IN
3554: IFFALSE 3812
// begin if un = Platonov then
3556: LD_VAR 0 3
3560: PUSH
3561: LD_EXP 16
3565: EQUAL
3566: IFFALSE 3593
// begin my_filter := my_filter diff Platonov ;
3568: LD_ADDR_VAR 0 4
3572: PUSH
3573: LD_VAR 0 4
3577: PUSH
3578: LD_EXP 16
3582: DIFF
3583: ST_TO_ADDR
// RemoveUnit ( Platonov ) ;
3584: LD_EXP 16
3588: PPUSH
3589: CALL_OW 64
// end ; if un = Burlak or ( IsDrivenBy ( un ) = Burlak ) then
3593: LD_VAR 0 3
3597: PUSH
3598: LD_EXP 14
3602: EQUAL
3603: PUSH
3604: LD_VAR 0 3
3608: PPUSH
3609: CALL_OW 311
3613: PUSH
3614: LD_EXP 14
3618: EQUAL
3619: OR
3620: IFFALSE 3630
// begin Burlak_saved := true ;
3622: LD_ADDR_EXP 1
3626: PUSH
3627: LD_INT 1
3629: ST_TO_ADDR
// end ; if un = Gaydar or ( IsDrivenBy ( un ) = Gaydar ) then
3630: LD_VAR 0 3
3634: PUSH
3635: LD_EXP 27
3639: EQUAL
3640: PUSH
3641: LD_VAR 0 3
3645: PPUSH
3646: CALL_OW 311
3650: PUSH
3651: LD_EXP 27
3655: EQUAL
3656: OR
3657: IFFALSE 3674
// begin Gaydar_saved := true ;
3659: LD_ADDR_EXP 2
3663: PUSH
3664: LD_INT 1
3666: ST_TO_ADDR
// ChangeMissionObjectives ( MOutGaydar ) ;
3667: LD_STRING MOutGaydar
3669: PPUSH
3670: CALL_OW 337
// end ; if konec then
3674: LD_EXP 43
3678: IFFALSE 3810
// begin if GetType ( un ) = unit_vehicle and GetSide ( IsDrivenBy ( un ) ) = you and not GetNation ( IsDrivenBy ( un ) ) = nation_nature then
3680: LD_VAR 0 3
3684: PPUSH
3685: CALL_OW 247
3689: PUSH
3690: LD_INT 2
3692: EQUAL
3693: PUSH
3694: LD_VAR 0 3
3698: PPUSH
3699: CALL_OW 311
3703: PPUSH
3704: CALL_OW 255
3708: PUSH
3709: LD_EXP 4
3713: EQUAL
3714: AND
3715: PUSH
3716: LD_VAR 0 3
3720: PPUSH
3721: CALL_OW 311
3725: PPUSH
3726: CALL_OW 248
3730: PUSH
3731: LD_INT 0
3733: EQUAL
3734: NOT
3735: AND
3736: IFFALSE 3761
// saved_player_units := saved_player_units union IsDrivenBy ( un ) else
3738: LD_ADDR_EXP 31
3742: PUSH
3743: LD_EXP 31
3747: PUSH
3748: LD_VAR 0 3
3752: PPUSH
3753: CALL_OW 311
3757: UNION
3758: ST_TO_ADDR
3759: GO 3810
// if GetSide ( un ) = you and not GetNation ( un ) = nation_nature then
3761: LD_VAR 0 3
3765: PPUSH
3766: CALL_OW 255
3770: PUSH
3771: LD_EXP 4
3775: EQUAL
3776: PUSH
3777: LD_VAR 0 3
3781: PPUSH
3782: CALL_OW 248
3786: PUSH
3787: LD_INT 0
3789: EQUAL
3790: NOT
3791: AND
3792: IFFALSE 3810
// saved_player_units := saved_player_units union un ;
3794: LD_ADDR_EXP 31
3798: PUSH
3799: LD_EXP 31
3803: PUSH
3804: LD_VAR 0 3
3808: UNION
3809: ST_TO_ADDR
// end ; end ;
3810: GO 3553
3812: POP
3813: POP
// for un in player_units do
3814: LD_ADDR_VAR 0 3
3818: PUSH
3819: LD_EXP 30
3823: PUSH
3824: FOR_IN
3825: IFFALSE 3856
// if IsDead ( un ) then
3827: LD_VAR 0 3
3831: PPUSH
3832: CALL_OW 301
3836: IFFALSE 3854
// player_units := player_units diff un ;
3838: LD_ADDR_EXP 30
3842: PUSH
3843: LD_EXP 30
3847: PUSH
3848: LD_VAR 0 3
3852: DIFF
3853: ST_TO_ADDR
3854: GO 3824
3856: POP
3857: POP
// for un in my_filter do
3858: LD_ADDR_VAR 0 3
3862: PUSH
3863: LD_VAR 0 4
3867: PUSH
3868: FOR_IN
3869: IFFALSE 3959
// begin if GetType ( un ) = unit_vehicle then
3871: LD_VAR 0 3
3875: PPUSH
3876: CALL_OW 247
3880: PUSH
3881: LD_INT 2
3883: EQUAL
3884: IFFALSE 3932
// begin player_units := player_units diff ( IsDrivenBy ( un ) ) ;
3886: LD_ADDR_EXP 30
3890: PUSH
3891: LD_EXP 30
3895: PUSH
3896: LD_VAR 0 3
3900: PPUSH
3901: CALL_OW 311
3905: DIFF
3906: ST_TO_ADDR
// RemoveUnit ( IsDrivenBy ( un ) ) ;
3907: LD_VAR 0 3
3911: PPUSH
3912: CALL_OW 311
3916: PPUSH
3917: CALL_OW 64
// RemoveUnit ( un ) ;
3921: LD_VAR 0 3
3925: PPUSH
3926: CALL_OW 64
// end else
3930: GO 3957
// begin player_units := player_units diff un ;
3932: LD_ADDR_EXP 30
3936: PUSH
3937: LD_EXP 30
3941: PUSH
3942: LD_VAR 0 3
3946: DIFF
3947: ST_TO_ADDR
// RemoveUnit ( un ) ;
3948: LD_VAR 0 3
3952: PPUSH
3953: CALL_OW 64
// end ; end ;
3957: GO 3868
3959: POP
3960: POP
// if Burlak_saved and Gaydar_saved and player_units = 0 then
3961: LD_EXP 1
3965: PUSH
3966: LD_EXP 2
3970: AND
3971: PUSH
3972: LD_EXP 30
3976: PUSH
3977: LD_INT 0
3979: EQUAL
3980: AND
3981: IFFALSE 3987
// konec_mise ;
3983: CALL 2958 0 0
// enable ;
3987: ENABLE
// end ;
3988: PPOPN 4
3990: END
// every 0 0$1 + 0 0$0.4 marked 5 do var un ;
3991: GO 3993
3993: DISABLE
3994: LD_INT 0
3996: PPUSH
// begin enable ;
3997: ENABLE
// for un in player_units do
3998: LD_ADDR_VAR 0 1
4002: PUSH
4003: LD_EXP 30
4007: PUSH
4008: FOR_IN
4009: IFFALSE 4063
// if GetDistUnits ( un , Gaydar ) <= 5 then
4011: LD_VAR 0 1
4015: PPUSH
4016: LD_EXP 27
4020: PPUSH
4021: CALL_OW 296
4025: PUSH
4026: LD_INT 5
4028: LESSEQUAL
4029: IFFALSE 4061
// begin disable ( 5 ) ;
4031: LD_INT 5
4033: DISABLE_MARKED
// SetSide ( Gaydar , you ) ;
4034: LD_EXP 27
4038: PPUSH
4039: LD_EXP 4
4043: PPUSH
4044: CALL_OW 235
// Dialogue11a ( un ) ;
4048: LD_VAR 0 1
4052: PPUSH
4053: CALL 7589 0 1
// exit ;
4057: POP
4058: POP
4059: GO 4065
// end ;
4061: GO 4008
4063: POP
4064: POP
// end ;
4065: PPOPN 1
4067: END
// every 0 0$1 + 0 0$0.2 marked 6 do
4068: GO 4070
4070: DISABLE
// begin if GetDistUnits ( Burlak , Gaydar ) <= 3 or IsInArea ( Gaydar , KnollArea ) then
4071: LD_EXP 14
4075: PPUSH
4076: LD_EXP 27
4080: PPUSH
4081: CALL_OW 296
4085: PUSH
4086: LD_INT 3
4088: LESSEQUAL
4089: PUSH
4090: LD_EXP 27
4094: PPUSH
4095: LD_INT 2
4097: PPUSH
4098: CALL_OW 308
4102: OR
4103: IFFALSE 4130
// begin disable ( 6 ) ;
4105: LD_INT 6
4107: DISABLE_MARKED
// Dialogue11b ;
4108: CALL 7636 0 0
// player_units := player_units union Gaydar ;
4112: LD_ADDR_EXP 30
4116: PUSH
4117: LD_EXP 30
4121: PUSH
4122: LD_EXP 27
4126: UNION
4127: ST_TO_ADDR
// end else
4128: GO 4131
// enable ;
4130: ENABLE
// end ;
4131: END
// every 0 0$0.7 + 0 0$0.3 do var un ;
4132: GO 4134
4134: DISABLE
4135: LD_INT 0
4137: PPUSH
// begin for un in player_units do
4138: LD_ADDR_VAR 0 1
4142: PUSH
4143: LD_EXP 30
4147: PUSH
4148: FOR_IN
4149: IFFALSE 4182
// if GetSide ( Attacks ( un ) ) = ally then
4151: LD_VAR 0 1
4155: PPUSH
4156: CALL_OW 320
4160: PPUSH
4161: CALL_OW 255
4165: PUSH
4166: LD_EXP 5
4170: EQUAL
4171: IFFALSE 4180
// YouLost ( SelfAttack ) ;
4173: LD_STRING SelfAttack
4175: PPUSH
4176: CALL_OW 104
4180: GO 4148
4182: POP
4183: POP
// enable ;
4184: ENABLE
// end ;
4185: PPOPN 1
4187: END
// every 0 0$1.3 do var un , ape ;
4188: GO 4190
4190: DISABLE
4191: LD_INT 0
4193: PPUSH
4194: PPUSH
// begin for un in ( player_units diff Kuzmov ) do
4195: LD_ADDR_VAR 0 1
4199: PUSH
4200: LD_EXP 30
4204: PUSH
4205: LD_EXP 19
4209: DIFF
4210: PUSH
4211: FOR_IN
4212: IFFALSE 4261
// begin if GetDistUnits ( un , Kuzmov ) < 10 then
4214: LD_VAR 0 1
4218: PPUSH
4219: LD_EXP 19
4223: PPUSH
4224: CALL_OW 296
4228: PUSH
4229: LD_INT 10
4231: LESS
4232: IFFALSE 4252
// begin SetSide ( Kuzmov , you ) ;
4234: LD_EXP 19
4238: PPUSH
4239: LD_EXP 4
4243: PPUSH
4244: CALL_OW 235
// exit ;
4248: POP
4249: POP
4250: GO 4281
// end ; Wait ( 3 ) ;
4252: LD_INT 3
4254: PPUSH
4255: CALL_OW 67
// end ;
4259: GO 4211
4261: POP
4262: POP
// if GetSide ( Kuzmov ) = ally then
4263: LD_EXP 19
4267: PPUSH
4268: CALL_OW 255
4272: PUSH
4273: LD_EXP 5
4277: EQUAL
4278: IFFALSE 4281
// enable ;
4280: ENABLE
// end ;
4281: PPOPN 2
4283: END
// every 0 0$1 + 0 0$0.5 do var un ;
4284: GO 4286
4286: DISABLE
4287: LD_INT 0
4289: PPUSH
// begin for un in player_units do
4290: LD_ADDR_VAR 0 1
4294: PUSH
4295: LD_EXP 30
4299: PUSH
4300: FOR_IN
4301: IFFALSE 4383
// if getside ( Attacks ( un ) ) = arab and not was_combat then
4303: LD_VAR 0 1
4307: PPUSH
4308: CALL_OW 320
4312: PPUSH
4313: CALL_OW 255
4317: PUSH
4318: LD_EXP 6
4322: EQUAL
4323: PUSH
4324: LD_EXP 51
4328: NOT
4329: AND
4330: IFFALSE 4380
// begin disable ;
4332: DISABLE
// was_combat := true ;
4333: LD_ADDR_EXP 51
4337: PUSH
4338: LD_INT 1
4340: ST_TO_ADDR
// Wait ( 0 0$5 ) ;
4341: LD_INT 175
4343: PPUSH
4344: CALL_OW 67
// if holdfreemode = 0 then
4348: LD_OWVAR 73
4352: PUSH
4353: LD_INT 0
4355: EQUAL
4356: IFFALSE 4367
// Hint ( Combat ) else
4358: LD_STRING Combat
4360: PPUSH
4361: CALL_OW 339
4365: GO 4374
// Hint ( Combat2 ) ;
4367: LD_STRING Combat2
4369: PPUSH
4370: CALL_OW 339
// exit ;
4374: POP
4375: POP
4376: GO 4385
// end else
4378: GO 4381
// enable ;
4380: ENABLE
4381: GO 4300
4383: POP
4384: POP
// end ;
4385: PPOPN 1
4387: END
// every 0 0$1 + 0 0$0.8 marked 19 do var filter ;
4388: GO 4390
4390: DISABLE
4391: LD_INT 0
4393: PPUSH
// begin filter := FilterAllUnits ( [ [ f_type , unit_building ] , [ f_not , [ f_or , [ f_btype , b_oil_power ] , [ f_btype , b_oil_mine ] , [ f_btype , b_bunker ] ] ] ] ) ;
4394: LD_ADDR_VAR 0 1
4398: PUSH
4399: LD_INT 21
4401: PUSH
4402: LD_INT 3
4404: PUSH
4405: EMPTY
4406: LIST
4407: LIST
4408: PUSH
4409: LD_INT 3
4411: PUSH
4412: LD_INT 2
4414: PUSH
4415: LD_INT 30
4417: PUSH
4418: LD_INT 26
4420: PUSH
4421: EMPTY
4422: LIST
4423: LIST
4424: PUSH
4425: LD_INT 30
4427: PUSH
4428: LD_INT 29
4430: PUSH
4431: EMPTY
4432: LIST
4433: LIST
4434: PUSH
4435: LD_INT 30
4437: PUSH
4438: LD_INT 32
4440: PUSH
4441: EMPTY
4442: LIST
4443: LIST
4444: PUSH
4445: EMPTY
4446: LIST
4447: LIST
4448: LIST
4449: LIST
4450: PUSH
4451: EMPTY
4452: LIST
4453: LIST
4454: PUSH
4455: EMPTY
4456: LIST
4457: LIST
4458: PPUSH
4459: CALL_OW 69
4463: ST_TO_ADDR
// if filter = 0 and not base_dismantled then
4464: LD_VAR 0 1
4468: PUSH
4469: LD_INT 0
4471: EQUAL
4472: PUSH
4473: LD_EXP 60
4477: NOT
4478: AND
4479: IFFALSE 4496
// begin ChangeMissionObjectives ( MOutDestroy ) ;
4481: LD_STRING MOutDestroy
4483: PPUSH
4484: CALL_OW 337
// base_dismantled := true ;
4488: LD_ADDR_EXP 60
4492: PUSH
4493: LD_INT 1
4495: ST_TO_ADDR
// end ; if ( not filter = 0 ) and base_dismantled then
4496: LD_VAR 0 1
4500: PUSH
4501: LD_INT 0
4503: EQUAL
4504: NOT
4505: PUSH
4506: LD_EXP 60
4510: AND
4511: IFFALSE 4528
// begin ChangeMissionObjectives ( MAddDestroy ) ;
4513: LD_STRING MAddDestroy
4515: PPUSH
4516: CALL_OW 337
// base_dismantled := false ;
4520: LD_ADDR_EXP 60
4524: PUSH
4525: LD_INT 0
4527: ST_TO_ADDR
// end ; enable ;
4528: ENABLE
// end ;
4529: PPOPN 1
4531: END
// on BuildingComplete ( building ) do begin if depot_build = false then
4532: LD_EXP 55
4536: PUSH
4537: LD_INT 0
4539: EQUAL
4540: IFFALSE 4664
// begin if ( GetBType ( building ) = b_depot ) and ( GetSide ( building ) = you ) and ( IsInArea ( building , KnollArea ) ) then
4542: LD_VAR 0 1
4546: PPUSH
4547: CALL_OW 266
4551: PUSH
4552: LD_INT 0
4554: EQUAL
4555: PUSH
4556: LD_VAR 0 1
4560: PPUSH
4561: CALL_OW 255
4565: PUSH
4566: LD_EXP 4
4570: EQUAL
4571: AND
4572: PUSH
4573: LD_VAR 0 1
4577: PPUSH
4578: LD_INT 2
4580: PPUSH
4581: CALL_OW 308
4585: AND
4586: IFFALSE 4613
// begin depot_build = true ;
4588: LD_ADDR_EXP 55
4592: PUSH
4593: LD_INT 1
4595: ST_TO_ADDR
// enable ( 2 ) ;
4596: LD_INT 2
4598: ENABLE_MARKED
// enable ( 8 ) ;
4599: LD_INT 8
4601: ENABLE_MARKED
// ChangeMissionObjectives ( MOutBuild ) ;
4602: LD_STRING MOutBuild
4604: PPUSH
4605: CALL_OW 337
// Dialogue2 ;
4609: CALL 5174 0 0
// end ; if ( GetBType ( building ) = b_depot ) and ( GetSide ( building ) = you ) and not ( IsInArea ( building , KnollArea ) ) then
4613: LD_VAR 0 1
4617: PPUSH
4618: CALL_OW 266
4622: PUSH
4623: LD_INT 0
4625: EQUAL
4626: PUSH
4627: LD_VAR 0 1
4631: PPUSH
4632: CALL_OW 255
4636: PUSH
4637: LD_EXP 4
4641: EQUAL
4642: AND
4643: PUSH
4644: LD_VAR 0 1
4648: PPUSH
4649: LD_INT 2
4651: PPUSH
4652: CALL_OW 308
4656: NOT
4657: AND
4658: IFFALSE 4664
// Dialogue2x ;
4660: CALL 5206 0 0
// end ; if GetBType ( building ) = b_workshop and not workshop_build then
4664: LD_VAR 0 1
4668: PPUSH
4669: CALL_OW 266
4673: PUSH
4674: LD_INT 2
4676: EQUAL
4677: PUSH
4678: LD_EXP 56
4682: NOT
4683: AND
4684: IFFALSE 4701
// begin workshop_build := true ;
4686: LD_ADDR_EXP 56
4690: PUSH
4691: LD_INT 1
4693: ST_TO_ADDR
// Hint ( Extensions1 ) ;
4694: LD_STRING Extensions1
4696: PPUSH
4697: CALL_OW 339
// end ; if GetBType ( building ) = b_armoury and not armoury_build then
4701: LD_VAR 0 1
4705: PPUSH
4706: CALL_OW 266
4710: PUSH
4711: LD_INT 4
4713: EQUAL
4714: PUSH
4715: LD_EXP 57
4719: NOT
4720: AND
4721: IFFALSE 4738
// begin armoury_build := true ;
4723: LD_ADDR_EXP 57
4727: PUSH
4728: LD_INT 1
4730: ST_TO_ADDR
// Hint ( Armoury ) ;
4731: LD_STRING Armoury
4733: PPUSH
4734: CALL_OW 339
// end ; if GetBType ( building ) = b_breastwork and not bunker_build then
4738: LD_VAR 0 1
4742: PPUSH
4743: CALL_OW 266
4747: PUSH
4748: LD_INT 31
4750: EQUAL
4751: PUSH
4752: LD_EXP 58
4756: NOT
4757: AND
4758: IFFALSE 4775
// begin bunker_build := true ;
4760: LD_ADDR_EXP 58
4764: PUSH
4765: LD_INT 1
4767: ST_TO_ADDR
// Hint ( Bunkers ) ;
4768: LD_STRING Bunkers
4770: PPUSH
4771: CALL_OW 339
// end ; if GetBType ( building ) = b_bunker and not turret_build then
4775: LD_VAR 0 1
4779: PPUSH
4780: CALL_OW 266
4784: PUSH
4785: LD_INT 32
4787: EQUAL
4788: PUSH
4789: LD_EXP 59
4793: NOT
4794: AND
4795: IFFALSE 4812
// begin turret_build := true ;
4797: LD_ADDR_EXP 59
4801: PUSH
4802: LD_INT 1
4804: ST_TO_ADDR
// Hint ( Turrets ) ;
4805: LD_STRING Turrets
4807: PPUSH
4808: CALL_OW 339
// end ; end ;
4812: PPOPN 1
4814: END
// on UpgradeComplete ( upgraded_building ) do begin if ( GetBType ( upgraded_building ) = b_lab_half ) and not lab_upgraded then
4815: LD_VAR 0 1
4819: PPUSH
4820: CALL_OW 266
4824: PUSH
4825: LD_INT 7
4827: EQUAL
4828: PUSH
4829: LD_EXP 53
4833: NOT
4834: AND
4835: IFFALSE 4849
// begin Dialogue5 ;
4837: CALL 5940 0 0
// lab_upgraded := true ;
4841: LD_ADDR_EXP 53
4845: PUSH
4846: LD_INT 1
4848: ST_TO_ADDR
// end ; if ( GetBType ( upgraded_building ) = b_factory ) and not workshop_upgraded then
4849: LD_VAR 0 1
4853: PPUSH
4854: CALL_OW 266
4858: PUSH
4859: LD_INT 3
4861: EQUAL
4862: PUSH
4863: LD_EXP 54
4867: NOT
4868: AND
4869: IFFALSE 4886
// begin Hint ( Extensions ) ;
4871: LD_STRING Extensions
4873: PPUSH
4874: CALL_OW 339
// workshop_upgraded := true ;
4878: LD_ADDR_EXP 54
4882: PUSH
4883: LD_INT 1
4885: ST_TO_ADDR
// end ; end ;
4886: PPOPN 1
4888: END
// on UnitDestroyed ( my_unit ) do var un ;
4889: LD_INT 0
4891: PPUSH
// begin if my_unit = Burlak then
4892: LD_VAR 0 1
4896: PUSH
4897: LD_EXP 14
4901: EQUAL
4902: IFFALSE 4911
// YouLost ( Burlak ) ;
4904: LD_STRING Burlak
4906: PPUSH
4907: CALL_OW 104
// if my_unit = Gaydar then
4911: LD_VAR 0 1
4915: PUSH
4916: LD_EXP 27
4920: EQUAL
4921: IFFALSE 4930
// YouLost ( Gaydar ) ;
4923: LD_STRING Gaydar
4925: PPUSH
4926: CALL_OW 104
// end ;
4930: PPOPN 2
4932: END
// on UnitGoesToRed ( red_unit ) do var un ;
4933: LD_INT 0
4935: PPUSH
// begin if red_unit in attack then
4936: LD_VAR 0 1
4940: PUSH
4941: LD_EXP 7
4945: IN
4946: IFFALSE 4962
// begin ar_killed := ar_killed + 1 ;
4948: LD_ADDR_EXP 50
4952: PUSH
4953: LD_EXP 50
4957: PUSH
4958: LD_INT 1
4960: PLUS
4961: ST_TO_ADDR
// end ; for un in sm_attack1 do
4962: LD_ADDR_VAR 0 2
4966: PUSH
4967: LD_EXP 9
4971: PUSH
4972: FOR_IN
4973: IFFALSE 5019
// if un = red_unit then
4975: LD_VAR 0 2
4979: PUSH
4980: LD_VAR 0 1
4984: EQUAL
4985: IFFALSE 5017
// begin sm_attack1 := sm_attack1 diff red_unit ;
4987: LD_ADDR_EXP 9
4991: PUSH
4992: LD_EXP 9
4996: PUSH
4997: LD_VAR 0 1
5001: DIFF
5002: ST_TO_ADDR
// ar_killed := ar_killed + 1 ;
5003: LD_ADDR_EXP 50
5007: PUSH
5008: LD_EXP 50
5012: PUSH
5013: LD_INT 1
5015: PLUS
5016: ST_TO_ADDR
// end ;
5017: GO 4972
5019: POP
5020: POP
// for un in sm_attack2 do
5021: LD_ADDR_VAR 0 2
5025: PUSH
5026: LD_EXP 10
5030: PUSH
5031: FOR_IN
5032: IFFALSE 5078
// if un = red_unit then
5034: LD_VAR 0 2
5038: PUSH
5039: LD_VAR 0 1
5043: EQUAL
5044: IFFALSE 5076
// begin sm_attack2 := sm_attack2 diff red_unit ;
5046: LD_ADDR_EXP 10
5050: PUSH
5051: LD_EXP 10
5055: PUSH
5056: LD_VAR 0 1
5060: DIFF
5061: ST_TO_ADDR
// ar_killed := ar_killed + 1 ;
5062: LD_ADDR_EXP 50
5066: PUSH
5067: LD_EXP 50
5071: PUSH
5072: LD_INT 1
5074: PLUS
5075: ST_TO_ADDR
// end ;
5076: GO 5031
5078: POP
5079: POP
// if red_unit = driver then
5080: LD_VAR 0 1
5084: PUSH
5085: LD_EXP 52
5089: EQUAL
5090: IFFALSE 5103
// begin Wait ( 0 0$5 ) ;
5092: LD_INT 175
5094: PPUSH
5095: CALL_OW 67
// steal_player_buildings ;
5099: CALL 13352 0 0
// end ; end ; end_of_file
5103: PPOPN 2
5105: END
// export function Dialogue1 ; begin
5106: LD_INT 0
5108: PPUSH
// SayRadio ( SoldierX , D1-RSol1-1 ) ;
5109: LD_EXP 21
5113: PPUSH
5114: LD_STRING D1-RSol1-1
5116: PPUSH
5117: CALL_OW 94
// SayRadio ( Platonov , D1-Pla-1 ) ;
5121: LD_EXP 16
5125: PPUSH
5126: LD_STRING D1-Pla-1
5128: PPUSH
5129: CALL_OW 94
// Say ( Burlak , D1-Bur-1 ) ;
5133: LD_EXP 14
5137: PPUSH
5138: LD_STRING D1-Bur-1
5140: PPUSH
5141: CALL_OW 88
// SayRadio ( Platonov , D1-Pla-2 ) ;
5145: LD_EXP 16
5149: PPUSH
5150: LD_STRING D1-Pla-2
5152: PPUSH
5153: CALL_OW 94
// Say ( Burlak , D1-Bur-2 ) ;
5157: LD_EXP 14
5161: PPUSH
5162: LD_STRING D1-Bur-2
5164: PPUSH
5165: CALL_OW 88
// end ;
5169: LD_VAR 0 1
5173: RET
// export function Dialogue2 ; begin
5174: LD_INT 0
5176: PPUSH
// Say ( Burlak , D2-Bur-1 ) ;
5177: LD_EXP 14
5181: PPUSH
5182: LD_STRING D2-Bur-1
5184: PPUSH
5185: CALL_OW 88
// SayRadio ( Platonov , D2-Pla-1 ) ;
5189: LD_EXP 16
5193: PPUSH
5194: LD_STRING D2-Pla-1
5196: PPUSH
5197: CALL_OW 94
// end ;
5201: LD_VAR 0 1
5205: RET
// export function Dialogue2x ; begin
5206: LD_INT 0
5208: PPUSH
// SayRadio ( Platonov , D2a-Pla-1 ) ;
5209: LD_EXP 16
5213: PPUSH
5214: LD_STRING D2a-Pla-1
5216: PPUSH
5217: CALL_OW 94
// end ;
5221: LD_VAR 0 1
5225: RET
// export function Dialogue2a ; begin
5226: LD_INT 0
5228: PPUSH
// Say ( IsDrivenBy ( FirstCargo ) , D2a-RSol1-1 ) ;
5229: LD_EXP 35
5233: PPUSH
5234: CALL_OW 311
5238: PPUSH
5239: LD_STRING D2a-RSol1-1
5241: PPUSH
5242: CALL_OW 88
// end ;
5246: LD_VAR 0 1
5250: RET
// export function Dialogue2b ; begin
5251: LD_INT 0
5253: PPUSH
// DialogueOn ;
5254: CALL_OW 6
// Say ( Kuzmov , D2b-Kuz-1 ) ;
5258: LD_EXP 19
5262: PPUSH
5263: LD_STRING D2b-Kuz-1
5265: PPUSH
5266: CALL_OW 88
// Say ( Burlak , D2b-Bur-1 ) ;
5270: LD_EXP 14
5274: PPUSH
5275: LD_STRING D2b-Bur-1
5277: PPUSH
5278: CALL_OW 88
// Say ( Kuzmov , D2b-Kuz-2 ) ;
5282: LD_EXP 19
5286: PPUSH
5287: LD_STRING D2b-Kuz-2
5289: PPUSH
5290: CALL_OW 88
// Say ( Burlak , D2b-Bur-2 ) ;
5294: LD_EXP 14
5298: PPUSH
5299: LD_STRING D2b-Bur-2
5301: PPUSH
5302: CALL_OW 88
// Say ( Kuzmov , D2b-Kuz-3 ) ;
5306: LD_EXP 19
5310: PPUSH
5311: LD_STRING D2b-Kuz-3
5313: PPUSH
5314: CALL_OW 88
// DialogueOff ;
5318: CALL_OW 7
// Query ( Q1 ) ;
5322: LD_STRING Q1
5324: PPUSH
5325: CALL_OW 97
// enable ( 4 ) ;
5329: LD_INT 4
5331: ENABLE_MARKED
// end ;
5332: LD_VAR 0 1
5336: RET
// export function Dialogue3a ; begin
5337: LD_INT 0
5339: PPUSH
// DialogueOn ;
5340: CALL_OW 6
// SayRadio ( Platonov , D3A-Pla-1 ) ;
5344: LD_EXP 16
5348: PPUSH
5349: LD_STRING D3A-Pla-1
5351: PPUSH
5352: CALL_OW 94
// Say ( Burlak , D3A-Bur-1 ) ;
5356: LD_EXP 14
5360: PPUSH
5361: LD_STRING D3A-Bur-1
5363: PPUSH
5364: CALL_OW 88
// SayRadio ( Platonov , D3A-Pla-2 ) ;
5368: LD_EXP 16
5372: PPUSH
5373: LD_STRING D3A-Pla-2
5375: PPUSH
5376: CALL_OW 94
// Say ( Kuzmov , D3A-Kuz-2 ) ;
5380: LD_EXP 19
5384: PPUSH
5385: LD_STRING D3A-Kuz-2
5387: PPUSH
5388: CALL_OW 88
// DialogueOff ;
5392: CALL_OW 7
// end ;
5396: LD_VAR 0 1
5400: RET
// export function Dialogue3b ; begin
5401: LD_INT 0
5403: PPUSH
// DialogueOn ;
5404: CALL_OW 6
// SayRadio ( Platonov , D3B-Pla-1 ) ;
5408: LD_EXP 16
5412: PPUSH
5413: LD_STRING D3B-Pla-1
5415: PPUSH
5416: CALL_OW 94
// Say ( Burlak , D3B-Bur-1 ) ;
5420: LD_EXP 14
5424: PPUSH
5425: LD_STRING D3B-Bur-1
5427: PPUSH
5428: CALL_OW 88
// SayRadio ( Platonov , D3B-Pla-2 ) ;
5432: LD_EXP 16
5436: PPUSH
5437: LD_STRING D3B-Pla-2
5439: PPUSH
5440: CALL_OW 94
// Say ( Kuzmov , D3B-Kuz-2 ) ;
5444: LD_EXP 19
5448: PPUSH
5449: LD_STRING D3B-Kuz-2
5451: PPUSH
5452: CALL_OW 88
// DialogueOff ;
5456: CALL_OW 7
// end ;
5460: LD_VAR 0 1
5464: RET
// export function Dialogue3c ; begin
5465: LD_INT 0
5467: PPUSH
// DialogueOn ;
5468: CALL_OW 6
// SayRadio ( Platonov , D3C-Pla-1 ) ;
5472: LD_EXP 16
5476: PPUSH
5477: LD_STRING D3C-Pla-1
5479: PPUSH
5480: CALL_OW 94
// Say ( Burlak , D3C-Bur-1 ) ;
5484: LD_EXP 14
5488: PPUSH
5489: LD_STRING D3C-Bur-1
5491: PPUSH
5492: CALL_OW 88
// SayRadio ( Platonov , D3C-Pla-2 ) ;
5496: LD_EXP 16
5500: PPUSH
5501: LD_STRING D3C-Pla-2
5503: PPUSH
5504: CALL_OW 94
// Say ( Burlak , D3C-Bur-2 ) ;
5508: LD_EXP 14
5512: PPUSH
5513: LD_STRING D3C-Bur-2
5515: PPUSH
5516: CALL_OW 88
// Say ( Kuzmov , D3C-Kuz-2 ) ;
5520: LD_EXP 19
5524: PPUSH
5525: LD_STRING D3C-Kuz-2
5527: PPUSH
5528: CALL_OW 88
// DialogueOff ;
5532: CALL_OW 7
// end ;
5536: LD_VAR 0 1
5540: RET
// export function Dialogue3d ; begin
5541: LD_INT 0
5543: PPUSH
// DialogueOn ;
5544: CALL_OW 6
// SayRadio ( Platonov , D3D-Pla-1 ) ;
5548: LD_EXP 16
5552: PPUSH
5553: LD_STRING D3D-Pla-1
5555: PPUSH
5556: CALL_OW 94
// Say ( Burlak , D3D-Bur-1 ) ;
5560: LD_EXP 14
5564: PPUSH
5565: LD_STRING D3D-Bur-1
5567: PPUSH
5568: CALL_OW 88
// SayRadio ( Platonov , D3D-Pla-2 ) ;
5572: LD_EXP 16
5576: PPUSH
5577: LD_STRING D3D-Pla-2
5579: PPUSH
5580: CALL_OW 94
// Say ( Kuzmov , D3D-Kuz-2 ) ;
5584: LD_EXP 19
5588: PPUSH
5589: LD_STRING D3D-Kuz-2
5591: PPUSH
5592: CALL_OW 88
// DialogueOff ;
5596: CALL_OW 7
// end ;
5600: LD_VAR 0 1
5604: RET
// export function Dialogue3e ; begin
5605: LD_INT 0
5607: PPUSH
// DialogueOn ;
5608: CALL_OW 6
// if ( RecklessAttack = true ) and ( BelkovFreed = false ) then
5612: LD_EXP 44
5616: PUSH
5617: LD_INT 1
5619: EQUAL
5620: PUSH
5621: LD_EXP 45
5625: PUSH
5626: LD_INT 0
5628: EQUAL
5629: AND
5630: IFFALSE 5644
// SayRadio ( Platonov , D3E-Pla-1 ) ;
5632: LD_EXP 16
5636: PPUSH
5637: LD_STRING D3E-Pla-1
5639: PPUSH
5640: CALL_OW 94
// if ( RecklessAttack = false ) and ( BelkovFreed = false ) then
5644: LD_EXP 44
5648: PUSH
5649: LD_INT 0
5651: EQUAL
5652: PUSH
5653: LD_EXP 45
5657: PUSH
5658: LD_INT 0
5660: EQUAL
5661: AND
5662: IFFALSE 5676
// SayRadio ( Platonov , D3E-Pla-1a ) ;
5664: LD_EXP 16
5668: PPUSH
5669: LD_STRING D3E-Pla-1a
5671: PPUSH
5672: CALL_OW 94
// if ( RecklessAttack = true ) and ( BelkovFreed = true ) then
5676: LD_EXP 44
5680: PUSH
5681: LD_INT 1
5683: EQUAL
5684: PUSH
5685: LD_EXP 45
5689: PUSH
5690: LD_INT 1
5692: EQUAL
5693: AND
5694: IFFALSE 5708
// SayRadio ( Platonov , D3E-Pla-1b ) ;
5696: LD_EXP 16
5700: PPUSH
5701: LD_STRING D3E-Pla-1b
5703: PPUSH
5704: CALL_OW 94
// if ( RecklessAttack = false ) and ( BelkovFreed = true ) then
5708: LD_EXP 44
5712: PUSH
5713: LD_INT 0
5715: EQUAL
5716: PUSH
5717: LD_EXP 45
5721: PUSH
5722: LD_INT 1
5724: EQUAL
5725: AND
5726: IFFALSE 5740
// SayRadio ( Platonov , D3E-Pla-1c ) ;
5728: LD_EXP 16
5732: PPUSH
5733: LD_STRING D3E-Pla-1c
5735: PPUSH
5736: CALL_OW 94
// DialogueOff ;
5740: CALL_OW 7
// YouLost ( Arrest ) ;
5744: LD_STRING Arrest
5746: PPUSH
5747: CALL_OW 104
// end ;
5751: LD_VAR 0 1
5755: RET
// export function Dialogue4 ; begin
5756: LD_INT 0
5758: PPUSH
// DialogueOn ;
5759: CALL_OW 6
// SayRadio ( Platonov , D4-Pla-1 ) ;
5763: LD_EXP 16
5767: PPUSH
5768: LD_STRING D4-Pla-1
5770: PPUSH
5771: CALL_OW 94
// Say ( Burlak , D4-Bur-1 ) ;
5775: LD_EXP 14
5779: PPUSH
5780: LD_STRING D4-Bur-1
5782: PPUSH
5783: CALL_OW 88
// Say ( Kuzmov , D4-Kuz-1 ) ;
5787: LD_EXP 19
5791: PPUSH
5792: LD_STRING D4-Kuz-1
5794: PPUSH
5795: CALL_OW 88
// if IsOK ( Belkov ) then
5799: LD_EXP 17
5803: PPUSH
5804: CALL_OW 302
5808: IFFALSE 5824
// Say ( Belkov , D4-Bel-1 ) else
5810: LD_EXP 17
5814: PPUSH
5815: LD_STRING D4-Bel-1
5817: PPUSH
5818: CALL_OW 88
5822: GO 5836
// Say ( Burlak , D4-Bur-2 ) ;
5824: LD_EXP 14
5828: PPUSH
5829: LD_STRING D4-Bur-2
5831: PPUSH
5832: CALL_OW 88
// if IsOK ( Gnyevko ) then
5836: LD_EXP 15
5840: PPUSH
5841: CALL_OW 302
5845: IFFALSE 5871
// begin Say ( Gnyevko , D4-Gny-2 ) ;
5847: LD_EXP 15
5851: PPUSH
5852: LD_STRING D4-Gny-2
5854: PPUSH
5855: CALL_OW 88
// Say ( Burlak , D4-Bur-3 ) ;
5859: LD_EXP 14
5863: PPUSH
5864: LD_STRING D4-Bur-3
5866: PPUSH
5867: CALL_OW 88
// end ; Say ( Burlak , D4-Bur-3a ) ;
5871: LD_EXP 14
5875: PPUSH
5876: LD_STRING D4-Bur-3a
5878: PPUSH
5879: CALL_OW 88
// if IsOK ( Belkov ) then
5883: LD_EXP 17
5887: PPUSH
5888: CALL_OW 302
5892: IFFALSE 5908
// Say ( Belkov , D4-Bel-3 ) else
5894: LD_EXP 17
5898: PPUSH
5899: LD_STRING D4-Bel-3
5901: PPUSH
5902: CALL_OW 88
5906: GO 5931
// if IsOK ( Kovalyuk ) then
5908: LD_EXP 20
5912: PPUSH
5913: CALL_OW 302
5917: IFFALSE 5931
// Say ( Kovalyuk , D4-Kov-3 ) ;
5919: LD_EXP 20
5923: PPUSH
5924: LD_STRING D4-Kov-3
5926: PPUSH
5927: CALL_OW 88
// DialogueOff ;
5931: CALL_OW 7
// end ;
5935: LD_VAR 0 1
5939: RET
// export function Dialogue5 ; var filter , filter_all , un ; begin
5940: LD_INT 0
5942: PPUSH
5943: PPUSH
5944: PPUSH
5945: PPUSH
// if IsOK ( Scholtze ) then
5946: LD_EXP 18
5950: PPUSH
5951: CALL_OW 302
5955: IFFALSE 5983
// begin Say ( Scholtze , D5-Sch-1 ) ;
5957: LD_EXP 18
5961: PPUSH
5962: LD_STRING D5-Sch-1
5964: PPUSH
5965: CALL_OW 88
// Say ( Burlak , D5-Bur-1 ) ;
5969: LD_EXP 14
5973: PPUSH
5974: LD_STRING D5-Bur-1
5976: PPUSH
5977: CALL_OW 88
// end else
5981: GO 6435
// begin filter_all := FilterAllUnits ( [ [ f_side , you ] , [ f_sex , sex_male ] , [ f_ok ] , [ f_not , [ f_nation , nation_nature ] ] ] ) ;
5983: LD_ADDR_VAR 0 3
5987: PUSH
5988: LD_INT 22
5990: PUSH
5991: LD_EXP 4
5995: PUSH
5996: EMPTY
5997: LIST
5998: LIST
5999: PUSH
6000: LD_INT 26
6002: PUSH
6003: LD_INT 1
6005: PUSH
6006: EMPTY
6007: LIST
6008: LIST
6009: PUSH
6010: LD_INT 50
6012: PUSH
6013: EMPTY
6014: LIST
6015: PUSH
6016: LD_INT 3
6018: PUSH
6019: LD_INT 23
6021: PUSH
6022: LD_INT 0
6024: PUSH
6025: EMPTY
6026: LIST
6027: LIST
6028: PUSH
6029: EMPTY
6030: LIST
6031: LIST
6032: PUSH
6033: EMPTY
6034: LIST
6035: LIST
6036: LIST
6037: LIST
6038: PPUSH
6039: CALL_OW 69
6043: ST_TO_ADDR
// filter_all := filter_all diff [ Burlak , Scholtze ] ;
6044: LD_ADDR_VAR 0 3
6048: PUSH
6049: LD_VAR 0 3
6053: PUSH
6054: LD_EXP 14
6058: PUSH
6059: LD_EXP 18
6063: PUSH
6064: EMPTY
6065: LIST
6066: LIST
6067: DIFF
6068: ST_TO_ADDR
// if 0 + filter_all > 0 then
6069: LD_INT 0
6071: PUSH
6072: LD_VAR 0 3
6076: PLUS
6077: PUSH
6078: LD_INT 0
6080: GREATER
6081: IFFALSE 6435
// begin filter := [ ] ;
6083: LD_ADDR_VAR 0 2
6087: PUSH
6088: EMPTY
6089: ST_TO_ADDR
// for un in filter_all do
6090: LD_ADDR_VAR 0 4
6094: PUSH
6095: LD_VAR 0 3
6099: PUSH
6100: FOR_IN
6101: IFFALSE 6170
// if not ( un in [ Gnyevko , Belkov , Kovalyuk , Kuzmov ] ) and GetClass ( un ) = class_scientistic then
6103: LD_VAR 0 4
6107: PUSH
6108: LD_EXP 15
6112: PUSH
6113: LD_EXP 17
6117: PUSH
6118: LD_EXP 20
6122: PUSH
6123: LD_EXP 19
6127: PUSH
6128: EMPTY
6129: LIST
6130: LIST
6131: LIST
6132: LIST
6133: IN
6134: NOT
6135: PUSH
6136: LD_VAR 0 4
6140: PPUSH
6141: CALL_OW 257
6145: PUSH
6146: LD_INT 4
6148: EQUAL
6149: AND
6150: IFFALSE 6168
// filter := filter union un ;
6152: LD_ADDR_VAR 0 2
6156: PUSH
6157: LD_VAR 0 2
6161: PUSH
6162: LD_VAR 0 4
6166: UNION
6167: ST_TO_ADDR
6168: GO 6100
6170: POP
6171: POP
// if filter > 0 then
6172: LD_VAR 0 2
6176: PUSH
6177: LD_INT 0
6179: GREATER
6180: IFFALSE 6212
// begin Say ( filter [ 1 ] , D5-RSci1-1 ) ;
6182: LD_VAR 0 2
6186: PUSH
6187: LD_INT 1
6189: ARRAY
6190: PPUSH
6191: LD_STRING D5-RSci1-1
6193: PPUSH
6194: CALL_OW 88
// Say ( Burlak , D5-Bur-1 ) ;
6198: LD_EXP 14
6202: PPUSH
6203: LD_STRING D5-Bur-1
6205: PPUSH
6206: CALL_OW 88
// end else
6210: GO 6435
// begin for un in filter_all do
6212: LD_ADDR_VAR 0 4
6216: PUSH
6217: LD_VAR 0 3
6221: PUSH
6222: FOR_IN
6223: IFFALSE 6277
// if not ( un in [ Gnyevko , Belkov , Kovalyuk , Kuzmov ] ) then
6225: LD_VAR 0 4
6229: PUSH
6230: LD_EXP 15
6234: PUSH
6235: LD_EXP 17
6239: PUSH
6240: LD_EXP 20
6244: PUSH
6245: LD_EXP 19
6249: PUSH
6250: EMPTY
6251: LIST
6252: LIST
6253: LIST
6254: LIST
6255: IN
6256: NOT
6257: IFFALSE 6275
// filter := filter union un ;
6259: LD_ADDR_VAR 0 2
6263: PUSH
6264: LD_VAR 0 2
6268: PUSH
6269: LD_VAR 0 4
6273: UNION
6274: ST_TO_ADDR
6275: GO 6222
6277: POP
6278: POP
// if filter > 0 then
6279: LD_VAR 0 2
6283: PUSH
6284: LD_INT 0
6286: GREATER
6287: IFFALSE 6319
// begin Say ( filter [ 1 ] , D5-RSci1-1 ) ;
6289: LD_VAR 0 2
6293: PUSH
6294: LD_INT 1
6296: ARRAY
6297: PPUSH
6298: LD_STRING D5-RSci1-1
6300: PPUSH
6301: CALL_OW 88
// Say ( Burlak , D5-Bur-1 ) ;
6305: LD_EXP 14
6309: PPUSH
6310: LD_STRING D5-Bur-1
6312: PPUSH
6313: CALL_OW 88
// end else
6317: GO 6435
// begin for un in filter_all do
6319: LD_ADDR_VAR 0 4
6323: PUSH
6324: LD_VAR 0 3
6328: PUSH
6329: FOR_IN
6330: IFFALSE 6365
// if GetClass ( un ) = class_scientistic then
6332: LD_VAR 0 4
6336: PPUSH
6337: CALL_OW 257
6341: PUSH
6342: LD_INT 4
6344: EQUAL
6345: IFFALSE 6363
// filter := filter union un ;
6347: LD_ADDR_VAR 0 2
6351: PUSH
6352: LD_VAR 0 2
6356: PUSH
6357: LD_VAR 0 4
6361: UNION
6362: ST_TO_ADDR
6363: GO 6329
6365: POP
6366: POP
// if filter > 0 then
6367: LD_VAR 0 2
6371: PUSH
6372: LD_INT 0
6374: GREATER
6375: IFFALSE 6407
// begin Say ( filter [ 1 ] , D5-RSci1-1 ) ;
6377: LD_VAR 0 2
6381: PUSH
6382: LD_INT 1
6384: ARRAY
6385: PPUSH
6386: LD_STRING D5-RSci1-1
6388: PPUSH
6389: CALL_OW 88
// Say ( Burlak , D5-Bur-1 ) ;
6393: LD_EXP 14
6397: PPUSH
6398: LD_STRING D5-Bur-1
6400: PPUSH
6401: CALL_OW 88
// end else
6405: GO 6435
// begin Say ( filter_all [ 1 ] , D5-RSci1-1 ) ;
6407: LD_VAR 0 3
6411: PUSH
6412: LD_INT 1
6414: ARRAY
6415: PPUSH
6416: LD_STRING D5-RSci1-1
6418: PPUSH
6419: CALL_OW 88
// Say ( Burlak , D5-Bur-1 ) ;
6423: LD_EXP 14
6427: PPUSH
6428: LD_STRING D5-Bur-1
6430: PPUSH
6431: CALL_OW 88
// end ; end ; end ; end ; end ; end ;
6435: LD_VAR 0 1
6439: RET
// export function Dialogue7 ; var ss , bool , rand_sentence , pole , filter ; begin
6440: LD_INT 0
6442: PPUSH
6443: PPUSH
6444: PPUSH
6445: PPUSH
6446: PPUSH
6447: PPUSH
// Randomize ;
6448: CALL_OW 10
// rand_sentence := Rand ( 1 , 3 ) ;
6452: LD_ADDR_VAR 0 4
6456: PUSH
6457: LD_INT 1
6459: PPUSH
6460: LD_INT 3
6462: PPUSH
6463: CALL_OW 12
6467: ST_TO_ADDR
// case rand_sentence of 1 :
6468: LD_VAR 0 4
6472: PUSH
6473: LD_INT 1
6475: DOUBLE
6476: EQUAL
6477: IFTRUE 6481
6479: GO 6496
6481: POP
// Say ( Burlak , D7-Bur-1 ) ; 2 :
6482: LD_EXP 14
6486: PPUSH
6487: LD_STRING D7-Bur-1
6489: PPUSH
6490: CALL_OW 88
6494: GO 6543
6496: LD_INT 2
6498: DOUBLE
6499: EQUAL
6500: IFTRUE 6504
6502: GO 6519
6504: POP
// Say ( Burlak , D7-Bur-1a ) ; 3 :
6505: LD_EXP 14
6509: PPUSH
6510: LD_STRING D7-Bur-1a
6512: PPUSH
6513: CALL_OW 88
6517: GO 6543
6519: LD_INT 3
6521: DOUBLE
6522: EQUAL
6523: IFTRUE 6527
6525: GO 6542
6527: POP
// Say ( Burlak , D7-Bur-1b ) ; end ;
6528: LD_EXP 14
6532: PPUSH
6533: LD_STRING D7-Bur-1b
6535: PPUSH
6536: CALL_OW 88
6540: GO 6543
6542: POP
// bool := false ;
6543: LD_ADDR_VAR 0 3
6547: PUSH
6548: LD_INT 0
6550: ST_TO_ADDR
// pole := [ ] ;
6551: LD_ADDR_VAR 0 5
6555: PUSH
6556: EMPTY
6557: ST_TO_ADDR
// repeat ss := ( [ 1 , 2 , 3 , 4 ] diff pole ) [ Rand ( 1 , 4 - pole ) ] ;
6558: LD_ADDR_VAR 0 2
6562: PUSH
6563: LD_INT 1
6565: PUSH
6566: LD_INT 2
6568: PUSH
6569: LD_INT 3
6571: PUSH
6572: LD_INT 4
6574: PUSH
6575: EMPTY
6576: LIST
6577: LIST
6578: LIST
6579: LIST
6580: PUSH
6581: LD_VAR 0 5
6585: DIFF
6586: PUSH
6587: LD_INT 1
6589: PPUSH
6590: LD_INT 4
6592: PUSH
6593: LD_VAR 0 5
6597: MINUS
6598: PPUSH
6599: CALL_OW 12
6603: ARRAY
6604: ST_TO_ADDR
// case ss of 1 :
6605: LD_VAR 0 2
6609: PUSH
6610: LD_INT 1
6612: DOUBLE
6613: EQUAL
6614: IFTRUE 6618
6616: GO 6664
6618: POP
// begin if IsOK ( Belkov ) then
6619: LD_EXP 17
6623: PPUSH
6624: CALL_OW 302
6628: IFFALSE 6648
// bool := Say ( Belkov , D7-Bel-1 ) ;
6630: LD_ADDR_VAR 0 3
6634: PUSH
6635: LD_EXP 17
6639: PPUSH
6640: LD_STRING D7-Bel-1
6642: PPUSH
6643: CALL_OW 88
6647: ST_TO_ADDR
// pole := pole union 1 ;
6648: LD_ADDR_VAR 0 5
6652: PUSH
6653: LD_VAR 0 5
6657: PUSH
6658: LD_INT 1
6660: UNION
6661: ST_TO_ADDR
// end ; 2 :
6662: GO 6827
6664: LD_INT 2
6666: DOUBLE
6667: EQUAL
6668: IFTRUE 6672
6670: GO 6718
6672: POP
// begin if IsOK ( Kuzmov ) then
6673: LD_EXP 19
6677: PPUSH
6678: CALL_OW 302
6682: IFFALSE 6702
// bool := Say ( Kuzmov , D7-Kuz-1 ) ;
6684: LD_ADDR_VAR 0 3
6688: PUSH
6689: LD_EXP 19
6693: PPUSH
6694: LD_STRING D7-Kuz-1
6696: PPUSH
6697: CALL_OW 88
6701: ST_TO_ADDR
// pole := pole union 2 ;
6702: LD_ADDR_VAR 0 5
6706: PUSH
6707: LD_VAR 0 5
6711: PUSH
6712: LD_INT 2
6714: UNION
6715: ST_TO_ADDR
// end ; 3 :
6716: GO 6827
6718: LD_INT 3
6720: DOUBLE
6721: EQUAL
6722: IFTRUE 6726
6724: GO 6772
6726: POP
// begin if IsOK ( Kovalyuk ) then
6727: LD_EXP 20
6731: PPUSH
6732: CALL_OW 302
6736: IFFALSE 6756
// bool := Say ( Kovalyuk , D7-Kov-1 ) ;
6738: LD_ADDR_VAR 0 3
6742: PUSH
6743: LD_EXP 20
6747: PPUSH
6748: LD_STRING D7-Kov-1
6750: PPUSH
6751: CALL_OW 88
6755: ST_TO_ADDR
// pole := pole union 3 ;
6756: LD_ADDR_VAR 0 5
6760: PUSH
6761: LD_VAR 0 5
6765: PUSH
6766: LD_INT 3
6768: UNION
6769: ST_TO_ADDR
// end ; 4 :
6770: GO 6827
6772: LD_INT 4
6774: DOUBLE
6775: EQUAL
6776: IFTRUE 6780
6778: GO 6826
6780: POP
// begin if IsOK ( Scholtze ) then
6781: LD_EXP 18
6785: PPUSH
6786: CALL_OW 302
6790: IFFALSE 6810
// bool := Say ( Scholtze , D7-Sch-1 ) ;
6792: LD_ADDR_VAR 0 3
6796: PUSH
6797: LD_EXP 18
6801: PPUSH
6802: LD_STRING D7-Sch-1
6804: PPUSH
6805: CALL_OW 88
6809: ST_TO_ADDR
// pole := pole union 4 ;
6810: LD_ADDR_VAR 0 5
6814: PUSH
6815: LD_VAR 0 5
6819: PUSH
6820: LD_INT 4
6822: UNION
6823: ST_TO_ADDR
// end ; end ;
6824: GO 6827
6826: POP
// Wait ( 1 ) ;
6827: LD_INT 1
6829: PPUSH
6830: CALL_OW 67
// until bool or ( pole > 3 ) ;
6834: LD_VAR 0 3
6838: PUSH
6839: LD_VAR 0 5
6843: PUSH
6844: LD_INT 3
6846: GREATER
6847: OR
6848: IFFALSE 6558
// if not bool then
6850: LD_VAR 0 3
6854: NOT
6855: IFFALSE 6918
// begin filter := FilterAllUnits ( [ [ f_side , you ] , [ f_sex , sex_male ] ] ) diff [ Burlak ] ;
6857: LD_ADDR_VAR 0 6
6861: PUSH
6862: LD_INT 22
6864: PUSH
6865: LD_EXP 4
6869: PUSH
6870: EMPTY
6871: LIST
6872: LIST
6873: PUSH
6874: LD_INT 26
6876: PUSH
6877: LD_INT 1
6879: PUSH
6880: EMPTY
6881: LIST
6882: LIST
6883: PUSH
6884: EMPTY
6885: LIST
6886: LIST
6887: PPUSH
6888: CALL_OW 69
6892: PUSH
6893: LD_EXP 14
6897: PUSH
6898: EMPTY
6899: LIST
6900: DIFF
6901: ST_TO_ADDR
// Say ( filter [ 1 ] , D7-RSol1-1 ) ;
6902: LD_VAR 0 6
6906: PUSH
6907: LD_INT 1
6909: ARRAY
6910: PPUSH
6911: LD_STRING D7-RSol1-1
6913: PPUSH
6914: CALL_OW 88
// end ; end ;
6918: LD_VAR 0 1
6922: RET
// export function Dialogue7a ; begin
6923: LD_INT 0
6925: PPUSH
// Say ( Heike , D7a-Hke-1 ) ;
6926: LD_EXP 28
6930: PPUSH
6931: LD_STRING D7a-Hke-1
6933: PPUSH
6934: CALL_OW 88
// Say ( Burlak , D7a-Bur-1 ) ;
6938: LD_EXP 14
6942: PPUSH
6943: LD_STRING D7a-Bur-1
6945: PPUSH
6946: CALL_OW 88
// end ;
6950: LD_VAR 0 1
6954: RET
// export function Dialogue8 ; var filter , filter_all , un ; begin
6955: LD_INT 0
6957: PPUSH
6958: PPUSH
6959: PPUSH
6960: PPUSH
// if IsOK ( Kuzmov ) then
6961: LD_EXP 19
6965: PPUSH
6966: CALL_OW 302
6970: IFFALSE 6998
// begin Say ( Kuzmov , D8-Kuz-1 ) ;
6972: LD_EXP 19
6976: PPUSH
6977: LD_STRING D8-Kuz-1
6979: PPUSH
6980: CALL_OW 88
// Say ( Burlak , D8-Bur-1 ) ;
6984: LD_EXP 14
6988: PPUSH
6989: LD_STRING D8-Bur-1
6991: PPUSH
6992: CALL_OW 88
// end else
6996: GO 7450
// begin filter_all := FilterAllUnits ( [ [ f_side , you ] , [ f_sex , sex_male ] , [ f_ok ] , [ f_not , [ f_nation , nation_nature ] ] ] ) ;
6998: LD_ADDR_VAR 0 3
7002: PUSH
7003: LD_INT 22
7005: PUSH
7006: LD_EXP 4
7010: PUSH
7011: EMPTY
7012: LIST
7013: LIST
7014: PUSH
7015: LD_INT 26
7017: PUSH
7018: LD_INT 1
7020: PUSH
7021: EMPTY
7022: LIST
7023: LIST
7024: PUSH
7025: LD_INT 50
7027: PUSH
7028: EMPTY
7029: LIST
7030: PUSH
7031: LD_INT 3
7033: PUSH
7034: LD_INT 23
7036: PUSH
7037: LD_INT 0
7039: PUSH
7040: EMPTY
7041: LIST
7042: LIST
7043: PUSH
7044: EMPTY
7045: LIST
7046: LIST
7047: PUSH
7048: EMPTY
7049: LIST
7050: LIST
7051: LIST
7052: LIST
7053: PPUSH
7054: CALL_OW 69
7058: ST_TO_ADDR
// filter_all := filter_all diff [ Burlak , Kuzmov ] ;
7059: LD_ADDR_VAR 0 3
7063: PUSH
7064: LD_VAR 0 3
7068: PUSH
7069: LD_EXP 14
7073: PUSH
7074: LD_EXP 19
7078: PUSH
7079: EMPTY
7080: LIST
7081: LIST
7082: DIFF
7083: ST_TO_ADDR
// if 0 + filter_all > 0 then
7084: LD_INT 0
7086: PUSH
7087: LD_VAR 0 3
7091: PLUS
7092: PUSH
7093: LD_INT 0
7095: GREATER
7096: IFFALSE 7450
// begin filter := [ ] ;
7098: LD_ADDR_VAR 0 2
7102: PUSH
7103: EMPTY
7104: ST_TO_ADDR
// for un in filter_all do
7105: LD_ADDR_VAR 0 4
7109: PUSH
7110: LD_VAR 0 3
7114: PUSH
7115: FOR_IN
7116: IFFALSE 7185
// if not ( un in [ Gnyevko , Belkov , Kovalyuk , Scholtze ] ) and GetClass ( un ) = class_soldier then
7118: LD_VAR 0 4
7122: PUSH
7123: LD_EXP 15
7127: PUSH
7128: LD_EXP 17
7132: PUSH
7133: LD_EXP 20
7137: PUSH
7138: LD_EXP 18
7142: PUSH
7143: EMPTY
7144: LIST
7145: LIST
7146: LIST
7147: LIST
7148: IN
7149: NOT
7150: PUSH
7151: LD_VAR 0 4
7155: PPUSH
7156: CALL_OW 257
7160: PUSH
7161: LD_INT 1
7163: EQUAL
7164: AND
7165: IFFALSE 7183
// filter := filter union un ;
7167: LD_ADDR_VAR 0 2
7171: PUSH
7172: LD_VAR 0 2
7176: PUSH
7177: LD_VAR 0 4
7181: UNION
7182: ST_TO_ADDR
7183: GO 7115
7185: POP
7186: POP
// if filter > 0 then
7187: LD_VAR 0 2
7191: PUSH
7192: LD_INT 0
7194: GREATER
7195: IFFALSE 7227
// begin Say ( filter [ 1 ] , D8-RSol1-1 ) ;
7197: LD_VAR 0 2
7201: PUSH
7202: LD_INT 1
7204: ARRAY
7205: PPUSH
7206: LD_STRING D8-RSol1-1
7208: PPUSH
7209: CALL_OW 88
// Say ( Burlak , D8-Bur-1 ) ;
7213: LD_EXP 14
7217: PPUSH
7218: LD_STRING D8-Bur-1
7220: PPUSH
7221: CALL_OW 88
// end else
7225: GO 7450
// begin for un in filter_all do
7227: LD_ADDR_VAR 0 4
7231: PUSH
7232: LD_VAR 0 3
7236: PUSH
7237: FOR_IN
7238: IFFALSE 7292
// if not ( un in [ Gnyevko , Belkov , Kovalyuk , Scholtze ] ) then
7240: LD_VAR 0 4
7244: PUSH
7245: LD_EXP 15
7249: PUSH
7250: LD_EXP 17
7254: PUSH
7255: LD_EXP 20
7259: PUSH
7260: LD_EXP 18
7264: PUSH
7265: EMPTY
7266: LIST
7267: LIST
7268: LIST
7269: LIST
7270: IN
7271: NOT
7272: IFFALSE 7290
// filter := filter union un ;
7274: LD_ADDR_VAR 0 2
7278: PUSH
7279: LD_VAR 0 2
7283: PUSH
7284: LD_VAR 0 4
7288: UNION
7289: ST_TO_ADDR
7290: GO 7237
7292: POP
7293: POP
// if filter > 0 then
7294: LD_VAR 0 2
7298: PUSH
7299: LD_INT 0
7301: GREATER
7302: IFFALSE 7334
// begin Say ( filter [ 1 ] , D8-RSol1-1 ) ;
7304: LD_VAR 0 2
7308: PUSH
7309: LD_INT 1
7311: ARRAY
7312: PPUSH
7313: LD_STRING D8-RSol1-1
7315: PPUSH
7316: CALL_OW 88
// Say ( Burlak , D8-Bur-1 ) ;
7320: LD_EXP 14
7324: PPUSH
7325: LD_STRING D8-Bur-1
7327: PPUSH
7328: CALL_OW 88
// end else
7332: GO 7450
// begin for un in filter_all do
7334: LD_ADDR_VAR 0 4
7338: PUSH
7339: LD_VAR 0 3
7343: PUSH
7344: FOR_IN
7345: IFFALSE 7380
// if GetClass ( un ) = class_soldier then
7347: LD_VAR 0 4
7351: PPUSH
7352: CALL_OW 257
7356: PUSH
7357: LD_INT 1
7359: EQUAL
7360: IFFALSE 7378
// filter := filter union un ;
7362: LD_ADDR_VAR 0 2
7366: PUSH
7367: LD_VAR 0 2
7371: PUSH
7372: LD_VAR 0 4
7376: UNION
7377: ST_TO_ADDR
7378: GO 7344
7380: POP
7381: POP
// if filter > 0 then
7382: LD_VAR 0 2
7386: PUSH
7387: LD_INT 0
7389: GREATER
7390: IFFALSE 7422
// begin Say ( filter [ 1 ] , D8-RSol1-1 ) ;
7392: LD_VAR 0 2
7396: PUSH
7397: LD_INT 1
7399: ARRAY
7400: PPUSH
7401: LD_STRING D8-RSol1-1
7403: PPUSH
7404: CALL_OW 88
// Say ( Burlak , D8-Bur-1 ) ;
7408: LD_EXP 14
7412: PPUSH
7413: LD_STRING D8-Bur-1
7415: PPUSH
7416: CALL_OW 88
// end else
7420: GO 7450
// begin Say ( filter_all [ 1 ] , D8-RSol1-1 ) ;
7422: LD_VAR 0 3
7426: PUSH
7427: LD_INT 1
7429: ARRAY
7430: PPUSH
7431: LD_STRING D8-RSol1-1
7433: PPUSH
7434: CALL_OW 88
// Say ( Burlak , D8-Bur-1 ) ;
7438: LD_EXP 14
7442: PPUSH
7443: LD_STRING D8-Bur-1
7445: PPUSH
7446: CALL_OW 88
// end ; end ; end ; end ; end ; end ;
7450: LD_VAR 0 1
7454: RET
// export function Dialogue9 ; begin
7455: LD_INT 0
7457: PPUSH
// SayRadio ( Platonov , D9-Pla-1 ) ;
7458: LD_EXP 16
7462: PPUSH
7463: LD_STRING D9-Pla-1
7465: PPUSH
7466: CALL_OW 94
// Say ( Burlak , D9-Bur-1 ) ;
7470: LD_EXP 14
7474: PPUSH
7475: LD_STRING D9-Bur-1
7477: PPUSH
7478: CALL_OW 88
// SayRadio ( Platonov , D9-Pla-2 ) ;
7482: LD_EXP 16
7486: PPUSH
7487: LD_STRING D9-Pla-2
7489: PPUSH
7490: CALL_OW 94
// Say ( Burlak , D9-Bur-2 ) ;
7494: LD_EXP 14
7498: PPUSH
7499: LD_STRING D9-Bur-2
7501: PPUSH
7502: CALL_OW 88
// ChangeMissionObjectives ( M2 ) ;
7506: LD_STRING M2
7508: PPUSH
7509: CALL_OW 337
// end ;
7513: LD_VAR 0 1
7517: RET
// export function Dialogue10 ; begin
7518: LD_INT 0
7520: PPUSH
// Say ( Gaydar , D10-Gay-1 ) ;
7521: LD_EXP 27
7525: PPUSH
7526: LD_STRING D10-Gay-1
7528: PPUSH
7529: CALL_OW 88
// Say ( Burlak , D10-Bur-1 ) ;
7533: LD_EXP 14
7537: PPUSH
7538: LD_STRING D10-Bur-1
7540: PPUSH
7541: CALL_OW 88
// Say ( Gaydar , D10-Gay-2 ) ;
7545: LD_EXP 27
7549: PPUSH
7550: LD_STRING D10-Gay-2
7552: PPUSH
7553: CALL_OW 88
// SayRadio ( Popov , D10-Pop-2 ) ;
7557: LD_EXP 26
7561: PPUSH
7562: LD_STRING D10-Pop-2
7564: PPUSH
7565: CALL_OW 94
// Say ( Gaydar , D10-Gay-3 ) ;
7569: LD_EXP 27
7573: PPUSH
7574: LD_STRING D10-Gay-3
7576: PPUSH
7577: CALL_OW 88
// enable ( 5 ) ;
7581: LD_INT 5
7583: ENABLE_MARKED
// end ;
7584: LD_VAR 0 1
7588: RET
// export function Dialogue11a ( someone ) ; begin
7589: LD_INT 0
7591: PPUSH
// if someone <> Burlak then
7592: LD_VAR 0 1
7596: PUSH
7597: LD_EXP 14
7601: NONEQUAL
7602: IFFALSE 7628
// begin Say ( Gaydar , D11-Gay-1 ) ;
7604: LD_EXP 27
7608: PPUSH
7609: LD_STRING D11-Gay-1
7611: PPUSH
7612: CALL_OW 88
// Say ( someone , D11-RSol1-1 ) ;
7616: LD_VAR 0 1
7620: PPUSH
7621: LD_STRING D11-RSol1-1
7623: PPUSH
7624: CALL_OW 88
// end ; enable ( 6 ) ;
7628: LD_INT 6
7630: ENABLE_MARKED
// end ;
7631: LD_VAR 0 2
7635: RET
// export function Dialogue11b ; begin
7636: LD_INT 0
7638: PPUSH
// Say ( Gaydar , D11-Gay-2 ) ;
7639: LD_EXP 27
7643: PPUSH
7644: LD_STRING D11-Gay-2
7646: PPUSH
7647: CALL_OW 88
// Say ( Burlak , D11-Bur-2 ) ;
7651: LD_EXP 14
7655: PPUSH
7656: LD_STRING D11-Bur-2
7658: PPUSH
7659: CALL_OW 88
// Say ( Gaydar , D11-Gay-3 ) ;
7663: LD_EXP 27
7667: PPUSH
7668: LD_STRING D11-Gay-3
7670: PPUSH
7671: CALL_OW 88
// Say ( Burlak , D11-Bur-3 ) ;
7675: LD_EXP 14
7679: PPUSH
7680: LD_STRING D11-Bur-3
7682: PPUSH
7683: CALL_OW 88
// Say ( Gaydar , D11-Gay-4 ) ;
7687: LD_EXP 27
7691: PPUSH
7692: LD_STRING D11-Gay-4
7694: PPUSH
7695: CALL_OW 88
// Say ( Burlak , D11-Bur-4 ) ;
7699: LD_EXP 14
7703: PPUSH
7704: LD_STRING D11-Bur-4
7706: PPUSH
7707: CALL_OW 88
// Wait ( 0 0$5 ) ;
7711: LD_INT 175
7713: PPUSH
7714: CALL_OW 67
// Dialogue12 ;
7718: CALL 7734 0 0
// Hint ( Dismantle ) ;
7722: LD_STRING Dismantle
7724: PPUSH
7725: CALL_OW 339
// end ;
7729: LD_VAR 0 1
7733: RET
// export function Dialogue12 ; begin
7734: LD_INT 0
7736: PPUSH
// SayRadio ( Popov , D12-Pop-1 ) ;
7737: LD_EXP 26
7741: PPUSH
7742: LD_STRING D12-Pop-1
7744: PPUSH
7745: CALL_OW 94
// Say ( Burlak , D12-Bur-1 ) ;
7749: LD_EXP 14
7753: PPUSH
7754: LD_STRING D12-Bur-1
7756: PPUSH
7757: CALL_OW 88
// SayRadio ( Platonov , D12-Pla-1 ) ;
7761: LD_EXP 16
7765: PPUSH
7766: LD_STRING D12-Pla-1
7768: PPUSH
7769: CALL_OW 94
// ChangeMissionObjectives ( MFinal ) ;
7773: LD_STRING MFinal
7775: PPUSH
7776: CALL_OW 337
// SetAreaMapShow ( ExitArea , true ) ;
7780: LD_INT 1
7782: PPUSH
7783: LD_INT 1
7785: PPUSH
7786: CALL_OW 424
// disable ( 13 ) ;
7790: LD_INT 13
7792: DISABLE_MARKED
// disable ( 12 ) ;
7793: LD_INT 12
7795: DISABLE_MARKED
// enable ( 19 ) ;
7796: LD_INT 19
7798: ENABLE_MARKED
// konec := true ;
7799: LD_ADDR_EXP 43
7803: PUSH
7804: LD_INT 1
7806: ST_TO_ADDR
// end ;
7807: LD_VAR 0 1
7811: RET
// on SailEvent ( num ) do Dialogue7 ; end_of_file
7812: CALL 6440 0 0
7816: PPOPN 1
7818: END
// export function prepare_convoy ; var a , i , rand_convoy , rand_vehicle ; begin
7819: LD_INT 0
7821: PPUSH
7822: PPUSH
7823: PPUSH
7824: PPUSH
7825: PPUSH
// Convoy := [ ] ;
7826: LD_ADDR_EXP 32
7830: PUSH
7831: EMPTY
7832: ST_TO_ADDR
// rand_convoy := [ ] ;
7833: LD_ADDR_VAR 0 4
7837: PUSH
7838: EMPTY
7839: ST_TO_ADDR
// for i := 1 to number_of_trucks do
7840: LD_ADDR_VAR 0 3
7844: PUSH
7845: DOUBLE
7846: LD_INT 1
7848: DEC
7849: ST_TO_ADDR
7850: LD_EXP 38
7854: PUSH
7855: FOR_TO
7856: IFFALSE 8092
// begin uc_side := ally ;
7858: LD_ADDR_OWVAR 20
7862: PUSH
7863: LD_EXP 5
7867: ST_TO_ADDR
// uc_nation := nation_russian ;
7868: LD_ADDR_OWVAR 21
7872: PUSH
7873: LD_INT 3
7875: ST_TO_ADDR
// uc_direction := 3 ;
7876: LD_ADDR_OWVAR 24
7880: PUSH
7881: LD_INT 3
7883: ST_TO_ADDR
// vc_chassis := ru_medium_wheeled ;
7884: LD_ADDR_OWVAR 37
7888: PUSH
7889: LD_INT 21
7891: ST_TO_ADDR
// vc_engine := engine_combustion ;
7892: LD_ADDR_OWVAR 39
7896: PUSH
7897: LD_INT 1
7899: ST_TO_ADDR
// vc_weapon := ru_cargo_bay ;
7900: LD_ADDR_OWVAR 40
7904: PUSH
7905: LD_INT 51
7907: ST_TO_ADDR
// vc_control := control_manual ;
7908: LD_ADDR_OWVAR 38
7912: PUSH
7913: LD_INT 1
7915: ST_TO_ADDR
// hc_name :=  ;
7916: LD_ADDR_OWVAR 26
7920: PUSH
7921: LD_STRING 
7923: ST_TO_ADDR
// PrepareHuman ( sex_male , 0 , 0 ) ;
7924: LD_INT 1
7926: PPUSH
7927: LD_INT 0
7929: PPUSH
7930: LD_INT 0
7932: PPUSH
7933: CALL_OW 380
// hc_basic_skills := [ 0 , 0 , 0 , 0 ] ;
7937: LD_ADDR_OWVAR 30
7941: PUSH
7942: LD_INT 0
7944: PUSH
7945: LD_INT 0
7947: PUSH
7948: LD_INT 0
7950: PUSH
7951: LD_INT 0
7953: PUSH
7954: EMPTY
7955: LIST
7956: LIST
7957: LIST
7958: LIST
7959: ST_TO_ADDR
// hc_skills := [ Rand ( 0 , 3 ) , Rand ( 0 , 3 ) , 1 , Rand ( 0 , 3 ) ] ;
7960: LD_ADDR_OWVAR 31
7964: PUSH
7965: LD_INT 0
7967: PPUSH
7968: LD_INT 3
7970: PPUSH
7971: CALL_OW 12
7975: PUSH
7976: LD_INT 0
7978: PPUSH
7979: LD_INT 3
7981: PPUSH
7982: CALL_OW 12
7986: PUSH
7987: LD_INT 1
7989: PUSH
7990: LD_INT 0
7992: PPUSH
7993: LD_INT 3
7995: PPUSH
7996: CALL_OW 12
8000: PUSH
8001: EMPTY
8002: LIST
8003: LIST
8004: LIST
8005: LIST
8006: ST_TO_ADDR
// Convoy := Convoy union CreateVehicle ;
8007: LD_ADDR_EXP 32
8011: PUSH
8012: LD_EXP 32
8016: PUSH
8017: CALL_OW 45
8021: UNION
8022: ST_TO_ADDR
// PlaceHumanInUnit ( CreateHuman , Convoy [ i ] ) ;
8023: CALL_OW 44
8027: PPUSH
8028: LD_EXP 32
8032: PUSH
8033: LD_VAR 0 3
8037: ARRAY
8038: PPUSH
8039: CALL_OW 52
// SetCargo ( Convoy [ i ] , mat_cans , 100 ) ;
8043: LD_EXP 32
8047: PUSH
8048: LD_VAR 0 3
8052: ARRAY
8053: PPUSH
8054: LD_INT 1
8056: PPUSH
8057: LD_INT 100
8059: PPUSH
8060: CALL_OW 290
// SetFuel ( Convoy [ i ] , Rand ( 70 , 95 ) ) ;
8064: LD_EXP 32
8068: PUSH
8069: LD_VAR 0 3
8073: ARRAY
8074: PPUSH
8075: LD_INT 70
8077: PPUSH
8078: LD_INT 95
8080: PPUSH
8081: CALL_OW 12
8085: PPUSH
8086: CALL_OW 240
// end ;
8090: GO 7855
8092: POP
8093: POP
// for i := number_of_trucks + 1 to number_of_trucks + number_of_guns do
8094: LD_ADDR_VAR 0 3
8098: PUSH
8099: DOUBLE
8100: LD_EXP 38
8104: PUSH
8105: LD_INT 1
8107: PLUS
8108: DEC
8109: ST_TO_ADDR
8110: LD_EXP 38
8114: PUSH
8115: LD_EXP 39
8119: PLUS
8120: PUSH
8121: FOR_TO
8122: IFFALSE 8337
// begin uc_side := ally ;
8124: LD_ADDR_OWVAR 20
8128: PUSH
8129: LD_EXP 5
8133: ST_TO_ADDR
// uc_nation := nation_russian ;
8134: LD_ADDR_OWVAR 21
8138: PUSH
8139: LD_INT 3
8141: ST_TO_ADDR
// uc_direction := 3 ;
8142: LD_ADDR_OWVAR 24
8146: PUSH
8147: LD_INT 3
8149: ST_TO_ADDR
// vc_chassis := ru_medium_wheeled ;
8150: LD_ADDR_OWVAR 37
8154: PUSH
8155: LD_INT 21
8157: ST_TO_ADDR
// vc_engine := engine_combustion ;
8158: LD_ADDR_OWVAR 39
8162: PUSH
8163: LD_INT 1
8165: ST_TO_ADDR
// vc_weapon := ru_gun ;
8166: LD_ADDR_OWVAR 40
8170: PUSH
8171: LD_INT 44
8173: ST_TO_ADDR
// vc_control := control_manual ;
8174: LD_ADDR_OWVAR 38
8178: PUSH
8179: LD_INT 1
8181: ST_TO_ADDR
// hc_name :=  ;
8182: LD_ADDR_OWVAR 26
8186: PUSH
8187: LD_STRING 
8189: ST_TO_ADDR
// PrepareHuman ( 0 , class_mechanic , 0 ) ;
8190: LD_INT 0
8192: PPUSH
8193: LD_INT 3
8195: PPUSH
8196: LD_INT 0
8198: PPUSH
8199: CALL_OW 380
// hc_basic_skills := [ 0 , 0 , 0 , 0 ] ;
8203: LD_ADDR_OWVAR 30
8207: PUSH
8208: LD_INT 0
8210: PUSH
8211: LD_INT 0
8213: PUSH
8214: LD_INT 0
8216: PUSH
8217: LD_INT 0
8219: PUSH
8220: EMPTY
8221: LIST
8222: LIST
8223: LIST
8224: LIST
8225: ST_TO_ADDR
// hc_skills := [ Rand ( 0 , 3 ) , Rand ( 0 , 3 ) , 1 , Rand ( 0 , 3 ) ] ;
8226: LD_ADDR_OWVAR 31
8230: PUSH
8231: LD_INT 0
8233: PPUSH
8234: LD_INT 3
8236: PPUSH
8237: CALL_OW 12
8241: PUSH
8242: LD_INT 0
8244: PPUSH
8245: LD_INT 3
8247: PPUSH
8248: CALL_OW 12
8252: PUSH
8253: LD_INT 1
8255: PUSH
8256: LD_INT 0
8258: PPUSH
8259: LD_INT 3
8261: PPUSH
8262: CALL_OW 12
8266: PUSH
8267: EMPTY
8268: LIST
8269: LIST
8270: LIST
8271: LIST
8272: ST_TO_ADDR
// Convoy := Convoy union CreateVehicle ;
8273: LD_ADDR_EXP 32
8277: PUSH
8278: LD_EXP 32
8282: PUSH
8283: CALL_OW 45
8287: UNION
8288: ST_TO_ADDR
// PlaceHumanInUnit ( CreateHuman , Convoy [ i ] ) ;
8289: CALL_OW 44
8293: PPUSH
8294: LD_EXP 32
8298: PUSH
8299: LD_VAR 0 3
8303: ARRAY
8304: PPUSH
8305: CALL_OW 52
// SetFuel ( Convoy [ i ] , Rand ( 70 , 95 ) ) ;
8309: LD_EXP 32
8313: PUSH
8314: LD_VAR 0 3
8318: ARRAY
8319: PPUSH
8320: LD_INT 70
8322: PPUSH
8323: LD_INT 95
8325: PPUSH
8326: CALL_OW 12
8330: PPUSH
8331: CALL_OW 240
// end ;
8335: GO 8121
8337: POP
8338: POP
// for i := number_of_trucks + number_of_guns + 1 to number_of_trucks + number_of_guns + number_of_gatlings do
8339: LD_ADDR_VAR 0 3
8343: PUSH
8344: DOUBLE
8345: LD_EXP 38
8349: PUSH
8350: LD_EXP 39
8354: PLUS
8355: PUSH
8356: LD_INT 1
8358: PLUS
8359: DEC
8360: ST_TO_ADDR
8361: LD_EXP 38
8365: PUSH
8366: LD_EXP 39
8370: PLUS
8371: PUSH
8372: LD_EXP 41
8376: PLUS
8377: PUSH
8378: FOR_TO
8379: IFFALSE 8594
// begin uc_side := ally ;
8381: LD_ADDR_OWVAR 20
8385: PUSH
8386: LD_EXP 5
8390: ST_TO_ADDR
// uc_nation := nation_russian ;
8391: LD_ADDR_OWVAR 21
8395: PUSH
8396: LD_INT 3
8398: ST_TO_ADDR
// uc_direction := 3 ;
8399: LD_ADDR_OWVAR 24
8403: PUSH
8404: LD_INT 3
8406: ST_TO_ADDR
// vc_chassis := ru_medium_wheeled ;
8407: LD_ADDR_OWVAR 37
8411: PUSH
8412: LD_INT 21
8414: ST_TO_ADDR
// vc_engine := engine_combustion ;
8415: LD_ADDR_OWVAR 39
8419: PUSH
8420: LD_INT 1
8422: ST_TO_ADDR
// vc_weapon := ru_gatling_gun ;
8423: LD_ADDR_OWVAR 40
8427: PUSH
8428: LD_INT 43
8430: ST_TO_ADDR
// vc_control := control_manual ;
8431: LD_ADDR_OWVAR 38
8435: PUSH
8436: LD_INT 1
8438: ST_TO_ADDR
// hc_name :=  ;
8439: LD_ADDR_OWVAR 26
8443: PUSH
8444: LD_STRING 
8446: ST_TO_ADDR
// PrepareHuman ( sex_male , 0 , 0 ) ;
8447: LD_INT 1
8449: PPUSH
8450: LD_INT 0
8452: PPUSH
8453: LD_INT 0
8455: PPUSH
8456: CALL_OW 380
// hc_basic_skills := [ 0 , 0 , 0 , 0 ] ;
8460: LD_ADDR_OWVAR 30
8464: PUSH
8465: LD_INT 0
8467: PUSH
8468: LD_INT 0
8470: PUSH
8471: LD_INT 0
8473: PUSH
8474: LD_INT 0
8476: PUSH
8477: EMPTY
8478: LIST
8479: LIST
8480: LIST
8481: LIST
8482: ST_TO_ADDR
// hc_skills := [ Rand ( 0 , 3 ) , Rand ( 0 , 3 ) , 1 , Rand ( 0 , 3 ) ] ;
8483: LD_ADDR_OWVAR 31
8487: PUSH
8488: LD_INT 0
8490: PPUSH
8491: LD_INT 3
8493: PPUSH
8494: CALL_OW 12
8498: PUSH
8499: LD_INT 0
8501: PPUSH
8502: LD_INT 3
8504: PPUSH
8505: CALL_OW 12
8509: PUSH
8510: LD_INT 1
8512: PUSH
8513: LD_INT 0
8515: PPUSH
8516: LD_INT 3
8518: PPUSH
8519: CALL_OW 12
8523: PUSH
8524: EMPTY
8525: LIST
8526: LIST
8527: LIST
8528: LIST
8529: ST_TO_ADDR
// Convoy := Convoy union CreateVehicle ;
8530: LD_ADDR_EXP 32
8534: PUSH
8535: LD_EXP 32
8539: PUSH
8540: CALL_OW 45
8544: UNION
8545: ST_TO_ADDR
// PlaceHumanInUnit ( CreateHuman , Convoy [ i ] ) ;
8546: CALL_OW 44
8550: PPUSH
8551: LD_EXP 32
8555: PUSH
8556: LD_VAR 0 3
8560: ARRAY
8561: PPUSH
8562: CALL_OW 52
// SetFuel ( Convoy [ i ] , Rand ( 70 , 95 ) ) ;
8566: LD_EXP 32
8570: PUSH
8571: LD_VAR 0 3
8575: ARRAY
8576: PPUSH
8577: LD_INT 70
8579: PPUSH
8580: LD_INT 95
8582: PPUSH
8583: CALL_OW 12
8587: PPUSH
8588: CALL_OW 240
// end ;
8592: GO 8378
8594: POP
8595: POP
// for i := number_of_trucks + number_of_guns + number_of_gatlings + 1 to number_of_trucks + number_of_guns + number_of_gatlings + number_of_hv_guns do
8596: LD_ADDR_VAR 0 3
8600: PUSH
8601: DOUBLE
8602: LD_EXP 38
8606: PUSH
8607: LD_EXP 39
8611: PLUS
8612: PUSH
8613: LD_EXP 41
8617: PLUS
8618: PUSH
8619: LD_INT 1
8621: PLUS
8622: DEC
8623: ST_TO_ADDR
8624: LD_EXP 38
8628: PUSH
8629: LD_EXP 39
8633: PLUS
8634: PUSH
8635: LD_EXP 41
8639: PLUS
8640: PUSH
8641: LD_EXP 40
8645: PLUS
8646: PUSH
8647: FOR_TO
8648: IFFALSE 8889
// begin uc_side := ally ;
8650: LD_ADDR_OWVAR 20
8654: PUSH
8655: LD_EXP 5
8659: ST_TO_ADDR
// uc_nation := nation_russian ;
8660: LD_ADDR_OWVAR 21
8664: PUSH
8665: LD_INT 3
8667: ST_TO_ADDR
// uc_direction := 3 ;
8668: LD_ADDR_OWVAR 24
8672: PUSH
8673: LD_INT 3
8675: ST_TO_ADDR
// vc_chassis := ru_heavy_wheeled ;
8676: LD_ADDR_OWVAR 37
8680: PUSH
8681: LD_INT 23
8683: ST_TO_ADDR
// vc_engine := engine_combustion ;
8684: LD_ADDR_OWVAR 39
8688: PUSH
8689: LD_INT 1
8691: ST_TO_ADDR
// vc_weapon := ru_heavy_gun ;
8692: LD_ADDR_OWVAR 40
8696: PUSH
8697: LD_INT 46
8699: ST_TO_ADDR
// vc_control := control_manual ;
8700: LD_ADDR_OWVAR 38
8704: PUSH
8705: LD_INT 1
8707: ST_TO_ADDR
// hc_name :=  ;
8708: LD_ADDR_OWVAR 26
8712: PUSH
8713: LD_STRING 
8715: ST_TO_ADDR
// PrepareHuman ( sex_male , 0 , 0 ) ;
8716: LD_INT 1
8718: PPUSH
8719: LD_INT 0
8721: PPUSH
8722: LD_INT 0
8724: PPUSH
8725: CALL_OW 380
// hc_basic_skills := [ 0 , 0 , 0 , 0 ] ;
8729: LD_ADDR_OWVAR 30
8733: PUSH
8734: LD_INT 0
8736: PUSH
8737: LD_INT 0
8739: PUSH
8740: LD_INT 0
8742: PUSH
8743: LD_INT 0
8745: PUSH
8746: EMPTY
8747: LIST
8748: LIST
8749: LIST
8750: LIST
8751: ST_TO_ADDR
// hc_skills := [ Rand ( 0 , 3 ) , Rand ( 0 , 3 ) , 1 , Rand ( 0 , 3 ) ] ;
8752: LD_ADDR_OWVAR 31
8756: PUSH
8757: LD_INT 0
8759: PPUSH
8760: LD_INT 3
8762: PPUSH
8763: CALL_OW 12
8767: PUSH
8768: LD_INT 0
8770: PPUSH
8771: LD_INT 3
8773: PPUSH
8774: CALL_OW 12
8778: PUSH
8779: LD_INT 1
8781: PUSH
8782: LD_INT 0
8784: PPUSH
8785: LD_INT 3
8787: PPUSH
8788: CALL_OW 12
8792: PUSH
8793: EMPTY
8794: LIST
8795: LIST
8796: LIST
8797: LIST
8798: ST_TO_ADDR
// Convoy := Convoy union CreateVehicle ;
8799: LD_ADDR_EXP 32
8803: PUSH
8804: LD_EXP 32
8808: PUSH
8809: CALL_OW 45
8813: UNION
8814: ST_TO_ADDR
// PlaceHumanInUnit ( CreateHuman , Convoy [ i ] ) ;
8815: CALL_OW 44
8819: PPUSH
8820: LD_EXP 32
8824: PUSH
8825: LD_VAR 0 3
8829: ARRAY
8830: PPUSH
8831: CALL_OW 52
// SetFuel ( Convoy [ i ] , Rand ( 70 , 95 ) ) ;
8835: LD_EXP 32
8839: PUSH
8840: LD_VAR 0 3
8844: ARRAY
8845: PPUSH
8846: LD_INT 70
8848: PPUSH
8849: LD_INT 95
8851: PPUSH
8852: CALL_OW 12
8856: PPUSH
8857: CALL_OW 240
// SetLives ( Convoy [ i ] , Rand ( 500 , 1000 ) ) ;
8861: LD_EXP 32
8865: PUSH
8866: LD_VAR 0 3
8870: ARRAY
8871: PPUSH
8872: LD_INT 500
8874: PPUSH
8875: LD_INT 1000
8877: PPUSH
8878: CALL_OW 12
8882: PPUSH
8883: CALL_OW 234
// end ;
8887: GO 8647
8889: POP
8890: POP
// for i := number_of_trucks + number_of_guns + number_of_gatlings + number_of_hv_guns + 1 to number_of_trucks + number_of_guns + number_of_gatlings + number_of_hv_guns + number_of_hv_mchn_gun do
8891: LD_ADDR_VAR 0 3
8895: PUSH
8896: DOUBLE
8897: LD_EXP 38
8901: PUSH
8902: LD_EXP 39
8906: PLUS
8907: PUSH
8908: LD_EXP 41
8912: PLUS
8913: PUSH
8914: LD_EXP 40
8918: PLUS
8919: PUSH
8920: LD_INT 1
8922: PLUS
8923: DEC
8924: ST_TO_ADDR
8925: LD_EXP 38
8929: PUSH
8930: LD_EXP 39
8934: PLUS
8935: PUSH
8936: LD_EXP 41
8940: PLUS
8941: PUSH
8942: LD_EXP 40
8946: PLUS
8947: PUSH
8948: LD_EXP 42
8952: PLUS
8953: PUSH
8954: FOR_TO
8955: IFFALSE 9196
// begin uc_side := ally ;
8957: LD_ADDR_OWVAR 20
8961: PUSH
8962: LD_EXP 5
8966: ST_TO_ADDR
// uc_nation := nation_russian ;
8967: LD_ADDR_OWVAR 21
8971: PUSH
8972: LD_INT 3
8974: ST_TO_ADDR
// uc_direction := 3 ;
8975: LD_ADDR_OWVAR 24
8979: PUSH
8980: LD_INT 3
8982: ST_TO_ADDR
// vc_chassis := ru_medium_wheeled ;
8983: LD_ADDR_OWVAR 37
8987: PUSH
8988: LD_INT 21
8990: ST_TO_ADDR
// vc_engine := engine_combustion ;
8991: LD_ADDR_OWVAR 39
8995: PUSH
8996: LD_INT 1
8998: ST_TO_ADDR
// vc_weapon := ru_heavy_machine_gun ;
8999: LD_ADDR_OWVAR 40
9003: PUSH
9004: LD_INT 42
9006: ST_TO_ADDR
// vc_control := control_manual ;
9007: LD_ADDR_OWVAR 38
9011: PUSH
9012: LD_INT 1
9014: ST_TO_ADDR
// hc_name :=  ;
9015: LD_ADDR_OWVAR 26
9019: PUSH
9020: LD_STRING 
9022: ST_TO_ADDR
// PrepareHuman ( sex_male , 0 , 0 ) ;
9023: LD_INT 1
9025: PPUSH
9026: LD_INT 0
9028: PPUSH
9029: LD_INT 0
9031: PPUSH
9032: CALL_OW 380
// hc_basic_skills := [ 0 , 0 , 0 , 0 ] ;
9036: LD_ADDR_OWVAR 30
9040: PUSH
9041: LD_INT 0
9043: PUSH
9044: LD_INT 0
9046: PUSH
9047: LD_INT 0
9049: PUSH
9050: LD_INT 0
9052: PUSH
9053: EMPTY
9054: LIST
9055: LIST
9056: LIST
9057: LIST
9058: ST_TO_ADDR
// hc_skills := [ Rand ( 0 , 3 ) , Rand ( 0 , 3 ) , 1 , Rand ( 0 , 3 ) ] ;
9059: LD_ADDR_OWVAR 31
9063: PUSH
9064: LD_INT 0
9066: PPUSH
9067: LD_INT 3
9069: PPUSH
9070: CALL_OW 12
9074: PUSH
9075: LD_INT 0
9077: PPUSH
9078: LD_INT 3
9080: PPUSH
9081: CALL_OW 12
9085: PUSH
9086: LD_INT 1
9088: PUSH
9089: LD_INT 0
9091: PPUSH
9092: LD_INT 3
9094: PPUSH
9095: CALL_OW 12
9099: PUSH
9100: EMPTY
9101: LIST
9102: LIST
9103: LIST
9104: LIST
9105: ST_TO_ADDR
// Convoy := Convoy union CreateVehicle ;
9106: LD_ADDR_EXP 32
9110: PUSH
9111: LD_EXP 32
9115: PUSH
9116: CALL_OW 45
9120: UNION
9121: ST_TO_ADDR
// PlaceHumanInUnit ( CreateHuman , Convoy [ i ] ) ;
9122: CALL_OW 44
9126: PPUSH
9127: LD_EXP 32
9131: PUSH
9132: LD_VAR 0 3
9136: ARRAY
9137: PPUSH
9138: CALL_OW 52
// SetFuel ( Convoy [ i ] , Rand ( 70 , 95 ) ) ;
9142: LD_EXP 32
9146: PUSH
9147: LD_VAR 0 3
9151: ARRAY
9152: PPUSH
9153: LD_INT 70
9155: PPUSH
9156: LD_INT 95
9158: PPUSH
9159: CALL_OW 12
9163: PPUSH
9164: CALL_OW 240
// SetLives ( Convoy [ i ] , Rand ( 500 , 1000 ) ) ;
9168: LD_EXP 32
9172: PUSH
9173: LD_VAR 0 3
9177: ARRAY
9178: PPUSH
9179: LD_INT 500
9181: PPUSH
9182: LD_INT 1000
9184: PPUSH
9185: CALL_OW 12
9189: PPUSH
9190: CALL_OW 234
// end ;
9194: GO 8954
9196: POP
9197: POP
// rand_convoy := rand_convoy union Convoy [ 1 ] ;
9198: LD_ADDR_VAR 0 4
9202: PUSH
9203: LD_VAR 0 4
9207: PUSH
9208: LD_EXP 32
9212: PUSH
9213: LD_INT 1
9215: ARRAY
9216: UNION
9217: ST_TO_ADDR
// Convoy := Convoy diff Convoy [ 1 ] ;
9218: LD_ADDR_EXP 32
9222: PUSH
9223: LD_EXP 32
9227: PUSH
9228: LD_EXP 32
9232: PUSH
9233: LD_INT 1
9235: ARRAY
9236: DIFF
9237: ST_TO_ADDR
// Convoy_length := 0 + Convoy ;
9238: LD_ADDR_EXP 33
9242: PUSH
9243: LD_INT 0
9245: PUSH
9246: LD_EXP 32
9250: PLUS
9251: ST_TO_ADDR
// for i := 1 to Convoy_length do
9252: LD_ADDR_VAR 0 3
9256: PUSH
9257: DOUBLE
9258: LD_INT 1
9260: DEC
9261: ST_TO_ADDR
9262: LD_EXP 33
9266: PUSH
9267: FOR_TO
9268: IFFALSE 9338
// begin rand_vehicle := Rand ( 1 , 0 + Convoy ) ;
9270: LD_ADDR_VAR 0 5
9274: PUSH
9275: LD_INT 1
9277: PPUSH
9278: LD_INT 0
9280: PUSH
9281: LD_EXP 32
9285: PLUS
9286: PPUSH
9287: CALL_OW 12
9291: ST_TO_ADDR
// rand_convoy := rand_convoy union Convoy [ rand_vehicle ] ;
9292: LD_ADDR_VAR 0 4
9296: PUSH
9297: LD_VAR 0 4
9301: PUSH
9302: LD_EXP 32
9306: PUSH
9307: LD_VAR 0 5
9311: ARRAY
9312: UNION
9313: ST_TO_ADDR
// Convoy := Convoy diff Convoy [ rand_vehicle ] ;
9314: LD_ADDR_EXP 32
9318: PUSH
9319: LD_EXP 32
9323: PUSH
9324: LD_EXP 32
9328: PUSH
9329: LD_VAR 0 5
9333: ARRAY
9334: DIFF
9335: ST_TO_ADDR
// end ;
9336: GO 9267
9338: POP
9339: POP
// Convoy := rand_convoy ;
9340: LD_ADDR_EXP 32
9344: PUSH
9345: LD_VAR 0 4
9349: ST_TO_ADDR
// for i := 0 + Convoy downto 1 do
9350: LD_ADDR_VAR 0 3
9354: PUSH
9355: DOUBLE
9356: LD_INT 0
9358: PUSH
9359: LD_EXP 32
9363: PLUS
9364: INC
9365: ST_TO_ADDR
9366: LD_INT 1
9368: PUSH
9369: FOR_DOWNTO
9370: IFFALSE 9411
// if GetWeapon ( Convoy [ i ] ) = ru_cargo_bay then
9372: LD_EXP 32
9376: PUSH
9377: LD_VAR 0 3
9381: ARRAY
9382: PPUSH
9383: CALL_OW 264
9387: PUSH
9388: LD_INT 51
9390: EQUAL
9391: IFFALSE 9409
// FirstCargo := Convoy [ i ] ;
9393: LD_ADDR_EXP 35
9397: PUSH
9398: LD_EXP 32
9402: PUSH
9403: LD_VAR 0 3
9407: ARRAY
9408: ST_TO_ADDR
9409: GO 9369
9411: POP
9412: POP
// end ;
9413: LD_VAR 0 1
9417: RET
// var field_pocet , field_mezera , field_delay ; every 0 0$1 marked 2 do var g , h , delka ;
9418: GO 9420
9420: DISABLE
9421: LD_INT 0
9423: PPUSH
9424: PPUSH
9425: PPUSH
// begin enable ( 7 ) ;
9426: LD_INT 7
9428: ENABLE_MARKED
// enable ( 18 ) ;
9429: LD_INT 18
9431: ENABLE_MARKED
// delka := number_of_trucks + number_of_guns + number_of_gatlings + number_of_hv_guns + number_of_hv_mchn_gun ;
9432: LD_ADDR_VAR 0 3
9436: PUSH
9437: LD_EXP 38
9441: PUSH
9442: LD_EXP 39
9446: PLUS
9447: PUSH
9448: LD_EXP 41
9452: PLUS
9453: PUSH
9454: LD_EXP 40
9458: PLUS
9459: PUSH
9460: LD_EXP 42
9464: PLUS
9465: ST_TO_ADDR
// field_pocet := [ ] ;
9466: LD_ADDR_LOC 5
9470: PUSH
9471: EMPTY
9472: ST_TO_ADDR
// field_mezera := [ ] ;
9473: LD_ADDR_LOC 6
9477: PUSH
9478: EMPTY
9479: ST_TO_ADDR
// field_delay := [ ] ;
9480: LD_ADDR_LOC 7
9484: PUSH
9485: EMPTY
9486: ST_TO_ADDR
// repeat h := Rand ( 3 , 6 ) ;
9487: LD_ADDR_VAR 0 2
9491: PUSH
9492: LD_INT 3
9494: PPUSH
9495: LD_INT 6
9497: PPUSH
9498: CALL_OW 12
9502: ST_TO_ADDR
// delka := delka - h ;
9503: LD_ADDR_VAR 0 3
9507: PUSH
9508: LD_VAR 0 3
9512: PUSH
9513: LD_VAR 0 2
9517: MINUS
9518: ST_TO_ADDR
// if delka > 0 then
9519: LD_VAR 0 3
9523: PUSH
9524: LD_INT 0
9526: GREATER
9527: IFFALSE 9547
// field_pocet := field_pocet ^ h else
9529: LD_ADDR_LOC 5
9533: PUSH
9534: LD_LOC 5
9538: PUSH
9539: LD_VAR 0 2
9543: ADD
9544: ST_TO_ADDR
9545: GO 9569
// field_pocet := field_pocet ^ ( delka + h ) ;
9547: LD_ADDR_LOC 5
9551: PUSH
9552: LD_LOC 5
9556: PUSH
9557: LD_VAR 0 3
9561: PUSH
9562: LD_VAR 0 2
9566: PLUS
9567: ADD
9568: ST_TO_ADDR
// until delka <= 0 ;
9569: LD_VAR 0 3
9573: PUSH
9574: LD_INT 0
9576: LESSEQUAL
9577: IFFALSE 9487
// for g := 1 to field_pocet do
9579: LD_ADDR_VAR 0 1
9583: PUSH
9584: DOUBLE
9585: LD_INT 1
9587: DEC
9588: ST_TO_ADDR
9589: LD_LOC 5
9593: PUSH
9594: FOR_TO
9595: IFFALSE 9631
// begin h := Rand ( 13 , 15 ) ;
9597: LD_ADDR_VAR 0 2
9601: PUSH
9602: LD_INT 13
9604: PPUSH
9605: LD_INT 15
9607: PPUSH
9608: CALL_OW 12
9612: ST_TO_ADDR
// field_mezera := field_mezera ^ h ;
9613: LD_ADDR_LOC 6
9617: PUSH
9618: LD_LOC 6
9622: PUSH
9623: LD_VAR 0 2
9627: ADD
9628: ST_TO_ADDR
// end ;
9629: GO 9594
9631: POP
9632: POP
// for g := 1 to field_pocet do
9633: LD_ADDR_VAR 0 1
9637: PUSH
9638: DOUBLE
9639: LD_INT 1
9641: DEC
9642: ST_TO_ADDR
9643: LD_LOC 5
9647: PUSH
9648: FOR_TO
9649: IFFALSE 9697
// begin h := Rand ( convoy_delay [ 1 ] , convoy_delay [ 2 ] ) ;
9651: LD_ADDR_VAR 0 2
9655: PUSH
9656: LD_EXP 34
9660: PUSH
9661: LD_INT 1
9663: ARRAY
9664: PPUSH
9665: LD_EXP 34
9669: PUSH
9670: LD_INT 2
9672: ARRAY
9673: PPUSH
9674: CALL_OW 12
9678: ST_TO_ADDR
// field_delay := field_delay ^ h ;
9679: LD_ADDR_LOC 7
9683: PUSH
9684: LD_LOC 7
9688: PUSH
9689: LD_VAR 0 2
9693: ADD
9694: ST_TO_ADDR
// end ;
9695: GO 9648
9697: POP
9698: POP
// for g := 1 to field_pocet do
9699: LD_ADDR_VAR 0 1
9703: PUSH
9704: DOUBLE
9705: LD_INT 1
9707: DEC
9708: ST_TO_ADDR
9709: LD_LOC 5
9713: PUSH
9714: FOR_TO
9715: IFFALSE 9813
// begin make_convoy ( field_pocet [ g ] , field_mezera [ g ] , field_delay [ g ] ) ;
9717: LD_LOC 5
9721: PUSH
9722: LD_VAR 0 1
9726: ARRAY
9727: PPUSH
9728: LD_LOC 6
9732: PUSH
9733: LD_VAR 0 1
9737: ARRAY
9738: PPUSH
9739: LD_LOC 7
9743: PUSH
9744: LD_VAR 0 1
9748: ARRAY
9749: PPUSH
9750: CALL 9855 0 3
// if g = 0 + field_pocet then
9754: LD_VAR 0 1
9758: PUSH
9759: LD_INT 0
9761: PUSH
9762: LD_LOC 5
9766: PLUS
9767: EQUAL
9768: IFFALSE 9811
// begin Wait ( 1 1$30 ) ;
9770: LD_INT 3150
9772: PPUSH
9773: CALL_OW 67
// disable ( 4 ) ;
9777: LD_INT 4
9779: DISABLE_MARKED
// Disabled4 := true ;
9780: LD_ADDR_EXP 66
9784: PUSH
9785: LD_INT 1
9787: ST_TO_ADDR
// Wait ( 0 0$1 ) ;
9788: LD_INT 35
9790: PPUSH
9791: CALL_OW 67
// Dialogue4 ;
9795: CALL 5756 0 0
// Wait ( attack_offset ) ;
9799: LD_EXP 48
9803: PPUSH
9804: CALL_OW 67
// enable ( 11 ) ;
9808: LD_INT 11
9810: ENABLE_MARKED
// end ; end ;
9811: GO 9714
9813: POP
9814: POP
// end ;
9815: PPOPN 3
9817: END
// every 0 0$1 + 0 0$0.1 marked 7 do
9818: GO 9820
9820: DISABLE
// begin enable ;
9821: ENABLE
// if IsInArea ( FirstCargo , KnollArea ) then
9822: LD_EXP 35
9826: PPUSH
9827: LD_INT 2
9829: PPUSH
9830: CALL_OW 308
9834: IFFALSE 9854
// begin disable ( 7 ) ;
9836: LD_INT 7
9838: DISABLE_MARKED
// Dialogue2a ;
9839: CALL 5226 0 0
// Wait ( 2 2$20 ) ;
9843: LD_INT 4900
9845: PPUSH
9846: CALL_OW 67
// Dialogue2b ;
9850: CALL 5251 0 0
// end ; end ;
9854: END
// export function make_convoy ( trucks , delay , after_delay ) ; var k , cargowaypoints1 , cargowaypoints2 , waypoints , points ; begin
9855: LD_INT 0
9857: PPUSH
9858: PPUSH
9859: PPUSH
9860: PPUSH
9861: PPUSH
9862: PPUSH
// delay := delay * 35 ;
9863: LD_ADDR_VAR 0 2
9867: PUSH
9868: LD_VAR 0 2
9872: PUSH
9873: LD_INT 35
9875: MUL
9876: ST_TO_ADDR
// for k := 1 to trucks do
9877: LD_ADDR_VAR 0 5
9881: PUSH
9882: DOUBLE
9883: LD_INT 1
9885: DEC
9886: ST_TO_ADDR
9887: LD_VAR 0 1
9891: PUSH
9892: FOR_TO
9893: IFFALSE 10917
// begin pocet := pocet + 1 ;
9895: LD_ADDR_EXP 46
9899: PUSH
9900: LD_EXP 46
9904: PUSH
9905: LD_INT 1
9907: PLUS
9908: ST_TO_ADDR
// waypoints := [ [ 102 , 4 ] , [ 98 , 6 ] , [ 95 , 8 ] , [ 92 , 11 ] , [ 90 , 14 ] , [ 87 , 17 ] , [ 82 , 19 ] , [ 80 , 23 ] , [ 77 , 25 ] , [ 74 , 27 ] , [ 70 , 29 ] , [ 67 , 31 ] , [ 63 , 33 ] , [ 59 , 35 ] , [ 56 , 37 ] , [ 53 , 39 ] , [ 51 , 41 ] , [ 50 , 45 ] , [ 50 , 49 ] , [ 51 , 55 ] , [ 52 , 60 ] , [ 56 , 66 ] , [ 59 , 71 ] , [ 62 , 77 ] , [ 65 , 83 ] , [ 68 , 89 ] , [ 70 , 94 ] , [ 72 , 100 ] , [ 73 , 105 ] , [ 73 , 111 ] , [ 71 , 115 ] , [ 71 , 122 ] , [ 72 , 129 ] , [ 72 , 134 ] , [ 72 , 137 ] ] ;
9909: LD_ADDR_VAR 0 8
9913: PUSH
9914: LD_INT 102
9916: PUSH
9917: LD_INT 4
9919: PUSH
9920: EMPTY
9921: LIST
9922: LIST
9923: PUSH
9924: LD_INT 98
9926: PUSH
9927: LD_INT 6
9929: PUSH
9930: EMPTY
9931: LIST
9932: LIST
9933: PUSH
9934: LD_INT 95
9936: PUSH
9937: LD_INT 8
9939: PUSH
9940: EMPTY
9941: LIST
9942: LIST
9943: PUSH
9944: LD_INT 92
9946: PUSH
9947: LD_INT 11
9949: PUSH
9950: EMPTY
9951: LIST
9952: LIST
9953: PUSH
9954: LD_INT 90
9956: PUSH
9957: LD_INT 14
9959: PUSH
9960: EMPTY
9961: LIST
9962: LIST
9963: PUSH
9964: LD_INT 87
9966: PUSH
9967: LD_INT 17
9969: PUSH
9970: EMPTY
9971: LIST
9972: LIST
9973: PUSH
9974: LD_INT 82
9976: PUSH
9977: LD_INT 19
9979: PUSH
9980: EMPTY
9981: LIST
9982: LIST
9983: PUSH
9984: LD_INT 80
9986: PUSH
9987: LD_INT 23
9989: PUSH
9990: EMPTY
9991: LIST
9992: LIST
9993: PUSH
9994: LD_INT 77
9996: PUSH
9997: LD_INT 25
9999: PUSH
10000: EMPTY
10001: LIST
10002: LIST
10003: PUSH
10004: LD_INT 74
10006: PUSH
10007: LD_INT 27
10009: PUSH
10010: EMPTY
10011: LIST
10012: LIST
10013: PUSH
10014: LD_INT 70
10016: PUSH
10017: LD_INT 29
10019: PUSH
10020: EMPTY
10021: LIST
10022: LIST
10023: PUSH
10024: LD_INT 67
10026: PUSH
10027: LD_INT 31
10029: PUSH
10030: EMPTY
10031: LIST
10032: LIST
10033: PUSH
10034: LD_INT 63
10036: PUSH
10037: LD_INT 33
10039: PUSH
10040: EMPTY
10041: LIST
10042: LIST
10043: PUSH
10044: LD_INT 59
10046: PUSH
10047: LD_INT 35
10049: PUSH
10050: EMPTY
10051: LIST
10052: LIST
10053: PUSH
10054: LD_INT 56
10056: PUSH
10057: LD_INT 37
10059: PUSH
10060: EMPTY
10061: LIST
10062: LIST
10063: PUSH
10064: LD_INT 53
10066: PUSH
10067: LD_INT 39
10069: PUSH
10070: EMPTY
10071: LIST
10072: LIST
10073: PUSH
10074: LD_INT 51
10076: PUSH
10077: LD_INT 41
10079: PUSH
10080: EMPTY
10081: LIST
10082: LIST
10083: PUSH
10084: LD_INT 50
10086: PUSH
10087: LD_INT 45
10089: PUSH
10090: EMPTY
10091: LIST
10092: LIST
10093: PUSH
10094: LD_INT 50
10096: PUSH
10097: LD_INT 49
10099: PUSH
10100: EMPTY
10101: LIST
10102: LIST
10103: PUSH
10104: LD_INT 51
10106: PUSH
10107: LD_INT 55
10109: PUSH
10110: EMPTY
10111: LIST
10112: LIST
10113: PUSH
10114: LD_INT 52
10116: PUSH
10117: LD_INT 60
10119: PUSH
10120: EMPTY
10121: LIST
10122: LIST
10123: PUSH
10124: LD_INT 56
10126: PUSH
10127: LD_INT 66
10129: PUSH
10130: EMPTY
10131: LIST
10132: LIST
10133: PUSH
10134: LD_INT 59
10136: PUSH
10137: LD_INT 71
10139: PUSH
10140: EMPTY
10141: LIST
10142: LIST
10143: PUSH
10144: LD_INT 62
10146: PUSH
10147: LD_INT 77
10149: PUSH
10150: EMPTY
10151: LIST
10152: LIST
10153: PUSH
10154: LD_INT 65
10156: PUSH
10157: LD_INT 83
10159: PUSH
10160: EMPTY
10161: LIST
10162: LIST
10163: PUSH
10164: LD_INT 68
10166: PUSH
10167: LD_INT 89
10169: PUSH
10170: EMPTY
10171: LIST
10172: LIST
10173: PUSH
10174: LD_INT 70
10176: PUSH
10177: LD_INT 94
10179: PUSH
10180: EMPTY
10181: LIST
10182: LIST
10183: PUSH
10184: LD_INT 72
10186: PUSH
10187: LD_INT 100
10189: PUSH
10190: EMPTY
10191: LIST
10192: LIST
10193: PUSH
10194: LD_INT 73
10196: PUSH
10197: LD_INT 105
10199: PUSH
10200: EMPTY
10201: LIST
10202: LIST
10203: PUSH
10204: LD_INT 73
10206: PUSH
10207: LD_INT 111
10209: PUSH
10210: EMPTY
10211: LIST
10212: LIST
10213: PUSH
10214: LD_INT 71
10216: PUSH
10217: LD_INT 115
10219: PUSH
10220: EMPTY
10221: LIST
10222: LIST
10223: PUSH
10224: LD_INT 71
10226: PUSH
10227: LD_INT 122
10229: PUSH
10230: EMPTY
10231: LIST
10232: LIST
10233: PUSH
10234: LD_INT 72
10236: PUSH
10237: LD_INT 129
10239: PUSH
10240: EMPTY
10241: LIST
10242: LIST
10243: PUSH
10244: LD_INT 72
10246: PUSH
10247: LD_INT 134
10249: PUSH
10250: EMPTY
10251: LIST
10252: LIST
10253: PUSH
10254: LD_INT 72
10256: PUSH
10257: LD_INT 137
10259: PUSH
10260: EMPTY
10261: LIST
10262: LIST
10263: PUSH
10264: EMPTY
10265: LIST
10266: LIST
10267: LIST
10268: LIST
10269: LIST
10270: LIST
10271: LIST
10272: LIST
10273: LIST
10274: LIST
10275: LIST
10276: LIST
10277: LIST
10278: LIST
10279: LIST
10280: LIST
10281: LIST
10282: LIST
10283: LIST
10284: LIST
10285: LIST
10286: LIST
10287: LIST
10288: LIST
10289: LIST
10290: LIST
10291: LIST
10292: LIST
10293: LIST
10294: LIST
10295: LIST
10296: LIST
10297: LIST
10298: LIST
10299: LIST
10300: ST_TO_ADDR
// cargowaypoints1 := [ [ 102 , 4 ] , [ 98 , 6 ] , [ 95 , 8 ] , [ 92 , 11 ] , [ 90 , 14 ] , [ 87 , 17 ] , [ 82 , 19 ] , [ 80 , 23 ] , [ 77 , 25 ] , [ 74 , 27 ] , [ 70 , 29 ] , [ 67 , 31 ] , [ 63 , 33 ] , [ 59 , 35 ] , [ 56 , 37 ] , [ 53 , 39 ] , [ 51 , 41 ] , [ 50 , 45 ] , [ 50 , 49 ] , [ 51 , 55 ] , [ 52 , 60 ] , [ 56 , 66 ] , [ 59 , 71 ] , [ 62 , 77 ] , [ 88 , 85 ] ] ;
10301: LD_ADDR_VAR 0 6
10305: PUSH
10306: LD_INT 102
10308: PUSH
10309: LD_INT 4
10311: PUSH
10312: EMPTY
10313: LIST
10314: LIST
10315: PUSH
10316: LD_INT 98
10318: PUSH
10319: LD_INT 6
10321: PUSH
10322: EMPTY
10323: LIST
10324: LIST
10325: PUSH
10326: LD_INT 95
10328: PUSH
10329: LD_INT 8
10331: PUSH
10332: EMPTY
10333: LIST
10334: LIST
10335: PUSH
10336: LD_INT 92
10338: PUSH
10339: LD_INT 11
10341: PUSH
10342: EMPTY
10343: LIST
10344: LIST
10345: PUSH
10346: LD_INT 90
10348: PUSH
10349: LD_INT 14
10351: PUSH
10352: EMPTY
10353: LIST
10354: LIST
10355: PUSH
10356: LD_INT 87
10358: PUSH
10359: LD_INT 17
10361: PUSH
10362: EMPTY
10363: LIST
10364: LIST
10365: PUSH
10366: LD_INT 82
10368: PUSH
10369: LD_INT 19
10371: PUSH
10372: EMPTY
10373: LIST
10374: LIST
10375: PUSH
10376: LD_INT 80
10378: PUSH
10379: LD_INT 23
10381: PUSH
10382: EMPTY
10383: LIST
10384: LIST
10385: PUSH
10386: LD_INT 77
10388: PUSH
10389: LD_INT 25
10391: PUSH
10392: EMPTY
10393: LIST
10394: LIST
10395: PUSH
10396: LD_INT 74
10398: PUSH
10399: LD_INT 27
10401: PUSH
10402: EMPTY
10403: LIST
10404: LIST
10405: PUSH
10406: LD_INT 70
10408: PUSH
10409: LD_INT 29
10411: PUSH
10412: EMPTY
10413: LIST
10414: LIST
10415: PUSH
10416: LD_INT 67
10418: PUSH
10419: LD_INT 31
10421: PUSH
10422: EMPTY
10423: LIST
10424: LIST
10425: PUSH
10426: LD_INT 63
10428: PUSH
10429: LD_INT 33
10431: PUSH
10432: EMPTY
10433: LIST
10434: LIST
10435: PUSH
10436: LD_INT 59
10438: PUSH
10439: LD_INT 35
10441: PUSH
10442: EMPTY
10443: LIST
10444: LIST
10445: PUSH
10446: LD_INT 56
10448: PUSH
10449: LD_INT 37
10451: PUSH
10452: EMPTY
10453: LIST
10454: LIST
10455: PUSH
10456: LD_INT 53
10458: PUSH
10459: LD_INT 39
10461: PUSH
10462: EMPTY
10463: LIST
10464: LIST
10465: PUSH
10466: LD_INT 51
10468: PUSH
10469: LD_INT 41
10471: PUSH
10472: EMPTY
10473: LIST
10474: LIST
10475: PUSH
10476: LD_INT 50
10478: PUSH
10479: LD_INT 45
10481: PUSH
10482: EMPTY
10483: LIST
10484: LIST
10485: PUSH
10486: LD_INT 50
10488: PUSH
10489: LD_INT 49
10491: PUSH
10492: EMPTY
10493: LIST
10494: LIST
10495: PUSH
10496: LD_INT 51
10498: PUSH
10499: LD_INT 55
10501: PUSH
10502: EMPTY
10503: LIST
10504: LIST
10505: PUSH
10506: LD_INT 52
10508: PUSH
10509: LD_INT 60
10511: PUSH
10512: EMPTY
10513: LIST
10514: LIST
10515: PUSH
10516: LD_INT 56
10518: PUSH
10519: LD_INT 66
10521: PUSH
10522: EMPTY
10523: LIST
10524: LIST
10525: PUSH
10526: LD_INT 59
10528: PUSH
10529: LD_INT 71
10531: PUSH
10532: EMPTY
10533: LIST
10534: LIST
10535: PUSH
10536: LD_INT 62
10538: PUSH
10539: LD_INT 77
10541: PUSH
10542: EMPTY
10543: LIST
10544: LIST
10545: PUSH
10546: LD_INT 88
10548: PUSH
10549: LD_INT 85
10551: PUSH
10552: EMPTY
10553: LIST
10554: LIST
10555: PUSH
10556: EMPTY
10557: LIST
10558: LIST
10559: LIST
10560: LIST
10561: LIST
10562: LIST
10563: LIST
10564: LIST
10565: LIST
10566: LIST
10567: LIST
10568: LIST
10569: LIST
10570: LIST
10571: LIST
10572: LIST
10573: LIST
10574: LIST
10575: LIST
10576: LIST
10577: LIST
10578: LIST
10579: LIST
10580: LIST
10581: LIST
10582: ST_TO_ADDR
// cargowaypoints2 := [ [ 68 , 89 ] , [ 70 , 94 ] , [ 72 , 100 ] , [ 73 , 105 ] , [ 73 , 111 ] , [ 71 , 115 ] , [ 71 , 122 ] , [ 72 , 129 ] , [ 72 , 134 ] , [ 72 , 137 ] ] ;
10583: LD_ADDR_VAR 0 7
10587: PUSH
10588: LD_INT 68
10590: PUSH
10591: LD_INT 89
10593: PUSH
10594: EMPTY
10595: LIST
10596: LIST
10597: PUSH
10598: LD_INT 70
10600: PUSH
10601: LD_INT 94
10603: PUSH
10604: EMPTY
10605: LIST
10606: LIST
10607: PUSH
10608: LD_INT 72
10610: PUSH
10611: LD_INT 100
10613: PUSH
10614: EMPTY
10615: LIST
10616: LIST
10617: PUSH
10618: LD_INT 73
10620: PUSH
10621: LD_INT 105
10623: PUSH
10624: EMPTY
10625: LIST
10626: LIST
10627: PUSH
10628: LD_INT 73
10630: PUSH
10631: LD_INT 111
10633: PUSH
10634: EMPTY
10635: LIST
10636: LIST
10637: PUSH
10638: LD_INT 71
10640: PUSH
10641: LD_INT 115
10643: PUSH
10644: EMPTY
10645: LIST
10646: LIST
10647: PUSH
10648: LD_INT 71
10650: PUSH
10651: LD_INT 122
10653: PUSH
10654: EMPTY
10655: LIST
10656: LIST
10657: PUSH
10658: LD_INT 72
10660: PUSH
10661: LD_INT 129
10663: PUSH
10664: EMPTY
10665: LIST
10666: LIST
10667: PUSH
10668: LD_INT 72
10670: PUSH
10671: LD_INT 134
10673: PUSH
10674: EMPTY
10675: LIST
10676: LIST
10677: PUSH
10678: LD_INT 72
10680: PUSH
10681: LD_INT 137
10683: PUSH
10684: EMPTY
10685: LIST
10686: LIST
10687: PUSH
10688: EMPTY
10689: LIST
10690: LIST
10691: LIST
10692: LIST
10693: LIST
10694: LIST
10695: LIST
10696: LIST
10697: LIST
10698: LIST
10699: ST_TO_ADDR
// PlaceUnitXY ( Convoy [ pocet ] , 103 , 2 , false ) ;
10700: LD_EXP 32
10704: PUSH
10705: LD_EXP 46
10709: ARRAY
10710: PPUSH
10711: LD_INT 103
10713: PPUSH
10714: LD_INT 2
10716: PPUSH
10717: LD_INT 0
10719: PPUSH
10720: CALL_OW 48
// if Convoy [ pocet ] = FirstCargo then
10724: LD_EXP 32
10728: PUSH
10729: LD_EXP 46
10733: ARRAY
10734: PUSH
10735: LD_EXP 35
10739: EQUAL
10740: IFFALSE 10856
// begin for points in cargowaypoints1 do
10742: LD_ADDR_VAR 0 9
10746: PUSH
10747: LD_VAR 0 6
10751: PUSH
10752: FOR_IN
10753: IFFALSE 10790
// AddComMoveXY ( Convoy [ pocet ] , points [ 1 ] , points [ 2 ] ) ;
10755: LD_EXP 32
10759: PUSH
10760: LD_EXP 46
10764: ARRAY
10765: PPUSH
10766: LD_VAR 0 9
10770: PUSH
10771: LD_INT 1
10773: ARRAY
10774: PPUSH
10775: LD_VAR 0 9
10779: PUSH
10780: LD_INT 2
10782: ARRAY
10783: PPUSH
10784: CALL_OW 171
10788: GO 10752
10790: POP
10791: POP
// AddComUnload ( FirstCargo ) ;
10792: LD_EXP 35
10796: PPUSH
10797: CALL_OW 219
// for points in cargowaypoints2 do
10801: LD_ADDR_VAR 0 9
10805: PUSH
10806: LD_VAR 0 7
10810: PUSH
10811: FOR_IN
10812: IFFALSE 10849
// AddComMoveXY ( Convoy [ pocet ] , points [ 1 ] , points [ 2 ] ) ;
10814: LD_EXP 32
10818: PUSH
10819: LD_EXP 46
10823: ARRAY
10824: PPUSH
10825: LD_VAR 0 9
10829: PUSH
10830: LD_INT 1
10832: ARRAY
10833: PPUSH
10834: LD_VAR 0 9
10838: PUSH
10839: LD_INT 2
10841: ARRAY
10842: PPUSH
10843: CALL_OW 171
10847: GO 10811
10849: POP
10850: POP
// enable ( 7 ) ;
10851: LD_INT 7
10853: ENABLE_MARKED
// end else
10854: GO 10906
// for points in waypoints do
10856: LD_ADDR_VAR 0 9
10860: PUSH
10861: LD_VAR 0 8
10865: PUSH
10866: FOR_IN
10867: IFFALSE 10904
// AddComMoveXY ( Convoy [ pocet ] , points [ 1 ] , points [ 2 ] ) ;
10869: LD_EXP 32
10873: PUSH
10874: LD_EXP 46
10878: ARRAY
10879: PPUSH
10880: LD_VAR 0 9
10884: PUSH
10885: LD_INT 1
10887: ARRAY
10888: PPUSH
10889: LD_VAR 0 9
10893: PUSH
10894: LD_INT 2
10896: ARRAY
10897: PPUSH
10898: CALL_OW 171
10902: GO 10866
10904: POP
10905: POP
// Wait ( delay ) ;
10906: LD_VAR 0 2
10910: PPUSH
10911: CALL_OW 67
// end ;
10915: GO 9892
10917: POP
10918: POP
// after_delay := after_delay * 35 ;
10919: LD_ADDR_VAR 0 3
10923: PUSH
10924: LD_VAR 0 3
10928: PUSH
10929: LD_INT 35
10931: MUL
10932: ST_TO_ADDR
// Wait ( after_delay ) ;
10933: LD_VAR 0 3
10937: PPUSH
10938: CALL_OW 67
// end ;
10942: LD_VAR 0 4
10946: RET
// every 0 0$1 marked 4 do var un , car , cargos ;
10947: GO 10949
10949: DISABLE
10950: LD_INT 0
10952: PPUSH
10953: PPUSH
10954: PPUSH
// begin cargos := FilterAllUnits ( [ [ f_weapon , ru_cargo_bay ] , [ f_side , ally ] ] ) ;
10955: LD_ADDR_VAR 0 3
10959: PUSH
10960: LD_INT 34
10962: PUSH
10963: LD_INT 51
10965: PUSH
10966: EMPTY
10967: LIST
10968: LIST
10969: PUSH
10970: LD_INT 22
10972: PUSH
10973: LD_EXP 5
10977: PUSH
10978: EMPTY
10979: LIST
10980: LIST
10981: PUSH
10982: EMPTY
10983: LIST
10984: LIST
10985: PPUSH
10986: CALL_OW 69
10990: ST_TO_ADDR
// for car in cargos do
10991: LD_ADDR_VAR 0 2
10995: PUSH
10996: LD_VAR 0 3
11000: PUSH
11001: FOR_IN
11002: IFFALSE 11592
// begin Wait ( 1 ) ;
11004: LD_INT 1
11006: PPUSH
11007: CALL_OW 67
// if ( GetDistUnits ( car , NearestUnitToUnit ( player_units , car ) ) <= 5 ) and not ( car in trucks_diverted_list ) then
11011: LD_VAR 0 2
11015: PPUSH
11016: LD_EXP 30
11020: PPUSH
11021: LD_VAR 0 2
11025: PPUSH
11026: CALL_OW 74
11030: PPUSH
11031: CALL_OW 296
11035: PUSH
11036: LD_INT 5
11038: LESSEQUAL
11039: PUSH
11040: LD_VAR 0 2
11044: PUSH
11045: LD_EXP 37
11049: IN
11050: NOT
11051: AND
11052: IFFALSE 11590
// begin trucks_diverted_list := trucks_diverted_list union car ;
11054: LD_ADDR_EXP 37
11058: PUSH
11059: LD_EXP 37
11063: PUSH
11064: LD_VAR 0 2
11068: UNION
11069: ST_TO_ADDR
// if Query ( QQrSteal ) = 1 then
11070: LD_STRING QQrSteal
11072: PPUSH
11073: CALL_OW 97
11077: PUSH
11078: LD_INT 1
11080: EQUAL
11081: IFFALSE 11578
// begin trucks_diverted_count := trucks_diverted_count + 1 ;
11083: LD_ADDR_EXP 36
11087: PUSH
11088: LD_EXP 36
11092: PUSH
11093: LD_INT 1
11095: PLUS
11096: ST_TO_ADDR
// DialogueOn ;
11097: CALL_OW 6
// Say ( Burlak , DQrSteal#1-Bur-1 ) ;
11101: LD_EXP 14
11105: PPUSH
11106: LD_STRING DQrSteal#1-Bur-1
11108: PPUSH
11109: CALL_OW 88
// DialogueOff ;
11113: CALL_OW 7
// ComMoveToArea ( car , CansArea ) ;
11117: LD_VAR 0 2
11121: PPUSH
11122: LD_INT 3
11124: PPUSH
11125: CALL_OW 113
// Wait ( 1 ) ;
11129: LD_INT 1
11131: PPUSH
11132: CALL_OW 67
// AddComUnload ( car ) ;
11136: LD_VAR 0 2
11140: PPUSH
11141: CALL_OW 219
// Wait ( 1 ) ;
11145: LD_INT 1
11147: PPUSH
11148: CALL_OW 67
// AddComMoveXY ( car , 73 , 111 ) ;
11152: LD_VAR 0 2
11156: PPUSH
11157: LD_INT 73
11159: PPUSH
11160: LD_INT 111
11162: PPUSH
11163: CALL_OW 171
// Wait ( 1 ) ;
11167: LD_INT 1
11169: PPUSH
11170: CALL_OW 67
// AddComMoveXY ( car , 71 , 115 ) ;
11174: LD_VAR 0 2
11178: PPUSH
11179: LD_INT 71
11181: PPUSH
11182: LD_INT 115
11184: PPUSH
11185: CALL_OW 171
// Wait ( 1 ) ;
11189: LD_INT 1
11191: PPUSH
11192: CALL_OW 67
// AddComMoveXY ( car , 71 , 122 ) ;
11196: LD_VAR 0 2
11200: PPUSH
11201: LD_INT 71
11203: PPUSH
11204: LD_INT 122
11206: PPUSH
11207: CALL_OW 171
// Wait ( 1 ) ;
11211: LD_INT 1
11213: PPUSH
11214: CALL_OW 67
// AddComMoveXY ( car , 72 , 129 ) ;
11218: LD_VAR 0 2
11222: PPUSH
11223: LD_INT 72
11225: PPUSH
11226: LD_INT 129
11228: PPUSH
11229: CALL_OW 171
// Wait ( 1 ) ;
11233: LD_INT 1
11235: PPUSH
11236: CALL_OW 67
// AddComMoveXY ( car , 72 , 134 ) ;
11240: LD_VAR 0 2
11244: PPUSH
11245: LD_INT 72
11247: PPUSH
11248: LD_INT 134
11250: PPUSH
11251: CALL_OW 171
// Wait ( 1 ) ;
11255: LD_INT 1
11257: PPUSH
11258: CALL_OW 67
// AddComMoveXY ( car , 72 , 138 ) ;
11262: LD_VAR 0 2
11266: PPUSH
11267: LD_INT 72
11269: PPUSH
11270: LD_INT 138
11272: PPUSH
11273: CALL_OW 171
// Wait ( 1 ) ;
11277: LD_INT 1
11279: PPUSH
11280: CALL_OW 67
// AddComMoveToArea ( car , ExitArea ) ;
11284: LD_VAR 0 2
11288: PPUSH
11289: LD_INT 1
11291: PPUSH
11292: CALL_OW 173
// Wait ( 0 0$8 ) ;
11296: LD_INT 280
11298: PPUSH
11299: CALL_OW 67
// if ( RecklessAttack and BelkovFreed ) then
11303: LD_EXP 44
11307: PUSH
11308: LD_EXP 45
11312: AND
11313: IFFALSE 11398
// begin case trucks_diverted_count of 2 :
11315: LD_EXP 36
11319: PUSH
11320: LD_INT 2
11322: DOUBLE
11323: EQUAL
11324: IFTRUE 11328
11326: GO 11335
11328: POP
// Dialogue3a ; 4 :
11329: CALL 5337 0 0
11333: GO 11396
11335: LD_INT 4
11337: DOUBLE
11338: EQUAL
11339: IFTRUE 11343
11341: GO 11350
11343: POP
// Dialogue3b ; 6 :
11344: CALL 5401 0 0
11348: GO 11396
11350: LD_INT 6
11352: DOUBLE
11353: EQUAL
11354: IFTRUE 11358
11356: GO 11365
11358: POP
// Dialogue3c ; 7 :
11359: CALL 5465 0 0
11363: GO 11396
11365: LD_INT 7
11367: DOUBLE
11368: EQUAL
11369: IFTRUE 11373
11371: GO 11380
11373: POP
// Dialogue3d ; 8 :
11374: CALL 5541 0 0
11378: GO 11396
11380: LD_INT 8
11382: DOUBLE
11383: EQUAL
11384: IFTRUE 11388
11386: GO 11395
11388: POP
// Dialogue3e ; end ;
11389: CALL 5605 0 0
11393: GO 11396
11395: POP
// end else
11396: GO 11576
// begin if ( not RecklessAttack ) and ( not BelkovFreed ) then
11398: LD_EXP 44
11402: NOT
11403: PUSH
11404: LD_EXP 45
11408: NOT
11409: AND
11410: IFFALSE 11495
// begin case trucks_diverted_count of 3 :
11412: LD_EXP 36
11416: PUSH
11417: LD_INT 3
11419: DOUBLE
11420: EQUAL
11421: IFTRUE 11425
11423: GO 11432
11425: POP
// Dialogue3a ; 6 :
11426: CALL 5337 0 0
11430: GO 11493
11432: LD_INT 6
11434: DOUBLE
11435: EQUAL
11436: IFTRUE 11440
11438: GO 11447
11440: POP
// Dialogue3b ; 7 :
11441: CALL 5401 0 0
11445: GO 11493
11447: LD_INT 7
11449: DOUBLE
11450: EQUAL
11451: IFTRUE 11455
11453: GO 11462
11455: POP
// Dialogue3c ; 9 :
11456: CALL 5465 0 0
11460: GO 11493
11462: LD_INT 9
11464: DOUBLE
11465: EQUAL
11466: IFTRUE 11470
11468: GO 11477
11470: POP
// Dialogue3d ; 10 :
11471: CALL 5541 0 0
11475: GO 11493
11477: LD_INT 10
11479: DOUBLE
11480: EQUAL
11481: IFTRUE 11485
11483: GO 11492
11485: POP
// Dialogue3e ; end ;
11486: CALL 5605 0 0
11490: GO 11493
11492: POP
// end else
11493: GO 11576
// begin case trucks_diverted_count of 2 :
11495: LD_EXP 36
11499: PUSH
11500: LD_INT 2
11502: DOUBLE
11503: EQUAL
11504: IFTRUE 11508
11506: GO 11515
11508: POP
// Dialogue3a ; 5 :
11509: CALL 5337 0 0
11513: GO 11576
11515: LD_INT 5
11517: DOUBLE
11518: EQUAL
11519: IFTRUE 11523
11521: GO 11530
11523: POP
// Dialogue3b ; 7 :
11524: CALL 5401 0 0
11528: GO 11576
11530: LD_INT 7
11532: DOUBLE
11533: EQUAL
11534: IFTRUE 11538
11536: GO 11545
11538: POP
// Dialogue3c ; 8 :
11539: CALL 5465 0 0
11543: GO 11576
11545: LD_INT 8
11547: DOUBLE
11548: EQUAL
11549: IFTRUE 11553
11551: GO 11560
11553: POP
// Dialogue3d ; 9 :
11554: CALL 5541 0 0
11558: GO 11576
11560: LD_INT 9
11562: DOUBLE
11563: EQUAL
11564: IFTRUE 11568
11566: GO 11575
11568: POP
// Dialogue3e ; end ;
11569: CALL 5605 0 0
11573: GO 11576
11575: POP
// end ; end ; end else
11576: GO 11590
// begin Say ( Burlak , DQrSteal#2-Bur-1 ) ;
11578: LD_EXP 14
11582: PPUSH
11583: LD_STRING DQrSteal#2-Bur-1
11585: PPUSH
11586: CALL_OW 88
// end ; end ; end ;
11590: GO 11001
11592: POP
11593: POP
// if not Disabled4 then
11594: LD_EXP 66
11598: NOT
11599: IFFALSE 11602
// enable ;
11601: ENABLE
// end ;
11602: PPOPN 3
11604: END
// every 0 0$10 marked 18 do var un , filter_nottask ;
11605: GO 11607
11607: DISABLE
11608: LD_INT 0
11610: PPUSH
11611: PPUSH
// begin filter_nottask := FilterUnitsExceptArea ( EnterArea , [ [ f_side , ally ] , [ f_not , [ f_hastask ] ] ] ) ;
11612: LD_ADDR_VAR 0 2
11616: PUSH
11617: LD_INT 4
11619: PPUSH
11620: LD_INT 22
11622: PUSH
11623: LD_EXP 5
11627: PUSH
11628: EMPTY
11629: LIST
11630: LIST
11631: PUSH
11632: LD_INT 3
11634: PUSH
11635: LD_INT 60
11637: PUSH
11638: EMPTY
11639: LIST
11640: PUSH
11641: EMPTY
11642: LIST
11643: LIST
11644: PUSH
11645: EMPTY
11646: LIST
11647: LIST
11648: PPUSH
11649: CALL_OW 71
11653: ST_TO_ADDR
// for un in filter_nottask do
11654: LD_ADDR_VAR 0 1
11658: PUSH
11659: LD_VAR 0 2
11663: PUSH
11664: FOR_IN
11665: IFFALSE 11691
// begin ComMoveXY ( un , 72 , 137 ) ;
11667: LD_VAR 0 1
11671: PPUSH
11672: LD_INT 72
11674: PPUSH
11675: LD_INT 137
11677: PPUSH
11678: CALL_OW 111
// Wait ( 5 ) ;
11682: LD_INT 5
11684: PPUSH
11685: CALL_OW 67
// end ;
11689: GO 11664
11691: POP
11692: POP
// enable ;
11693: ENABLE
// end ; end_of_file
11694: PPOPN 2
11696: END
// export function prepare_arabian_attack ; var vehicle_set , j , auto , abc ; begin
11697: LD_INT 0
11699: PPUSH
11700: PPUSH
11701: PPUSH
11702: PPUSH
11703: PPUSH
// attack := [ ] ;
11704: LD_ADDR_EXP 7
11708: PUSH
11709: EMPTY
11710: ST_TO_ADDR
// vehicle_set := [ [ ar_light_trike , engine_combustion , ar_light_gun , control_manual ] , [ ar_light_trike , engine_combustion , ar_double_machine_gun , control_manual ] , [ ar_medium_trike , engine_combustion , ar_gun , control_manual ] , [ ar_medium_trike , engine_combustion , ar_gatling_gun , control_manual ] , [ ar_medium_trike , engine_combustion , ar_flame_thrower , control_manual ] , [ ar_half_tracked , engine_combustion , ar_flame_thrower , control_manual ] , [ ar_half_tracked , engine_combustion , ar_rocket_launcher , control_manual ] , [ ar_half_tracked , engine_combustion , ar_gun , control_manual ] ] ;
11711: LD_ADDR_VAR 0 2
11715: PUSH
11716: LD_INT 12
11718: PUSH
11719: LD_INT 1
11721: PUSH
11722: LD_INT 23
11724: PUSH
11725: LD_INT 1
11727: PUSH
11728: EMPTY
11729: LIST
11730: LIST
11731: LIST
11732: LIST
11733: PUSH
11734: LD_INT 12
11736: PUSH
11737: LD_INT 1
11739: PUSH
11740: LD_INT 24
11742: PUSH
11743: LD_INT 1
11745: PUSH
11746: EMPTY
11747: LIST
11748: LIST
11749: LIST
11750: LIST
11751: PUSH
11752: LD_INT 13
11754: PUSH
11755: LD_INT 1
11757: PUSH
11758: LD_INT 27
11760: PUSH
11761: LD_INT 1
11763: PUSH
11764: EMPTY
11765: LIST
11766: LIST
11767: LIST
11768: LIST
11769: PUSH
11770: LD_INT 13
11772: PUSH
11773: LD_INT 1
11775: PUSH
11776: LD_INT 25
11778: PUSH
11779: LD_INT 1
11781: PUSH
11782: EMPTY
11783: LIST
11784: LIST
11785: LIST
11786: LIST
11787: PUSH
11788: LD_INT 13
11790: PUSH
11791: LD_INT 1
11793: PUSH
11794: LD_INT 26
11796: PUSH
11797: LD_INT 1
11799: PUSH
11800: EMPTY
11801: LIST
11802: LIST
11803: LIST
11804: LIST
11805: PUSH
11806: LD_INT 14
11808: PUSH
11809: LD_INT 1
11811: PUSH
11812: LD_INT 26
11814: PUSH
11815: LD_INT 1
11817: PUSH
11818: EMPTY
11819: LIST
11820: LIST
11821: LIST
11822: LIST
11823: PUSH
11824: LD_INT 14
11826: PUSH
11827: LD_INT 1
11829: PUSH
11830: LD_INT 28
11832: PUSH
11833: LD_INT 1
11835: PUSH
11836: EMPTY
11837: LIST
11838: LIST
11839: LIST
11840: LIST
11841: PUSH
11842: LD_INT 14
11844: PUSH
11845: LD_INT 1
11847: PUSH
11848: LD_INT 27
11850: PUSH
11851: LD_INT 1
11853: PUSH
11854: EMPTY
11855: LIST
11856: LIST
11857: LIST
11858: LIST
11859: PUSH
11860: EMPTY
11861: LIST
11862: LIST
11863: LIST
11864: LIST
11865: LIST
11866: LIST
11867: LIST
11868: LIST
11869: ST_TO_ADDR
// for j := 1 to ( 0 + waypointsEND ) do
11870: LD_ADDR_VAR 0 3
11874: PUSH
11875: DOUBLE
11876: LD_INT 1
11878: DEC
11879: ST_TO_ADDR
11880: LD_INT 0
11882: PUSH
11883: LD_EXP 63
11887: PLUS
11888: PUSH
11889: FOR_TO
11890: IFFALSE 12315
// begin uc_side := arab ;
11892: LD_ADDR_OWVAR 20
11896: PUSH
11897: LD_EXP 6
11901: ST_TO_ADDR
// uc_nation := nation_arabian ;
11902: LD_ADDR_OWVAR 21
11906: PUSH
11907: LD_INT 2
11909: ST_TO_ADDR
// uc_direction := 3 ;
11910: LD_ADDR_OWVAR 24
11914: PUSH
11915: LD_INT 3
11917: ST_TO_ADDR
// hc_name :=  ;
11918: LD_ADDR_OWVAR 26
11922: PUSH
11923: LD_STRING 
11925: ST_TO_ADDR
// case Rand ( 1 , 100 ) of 1 .. 10 :
11926: LD_INT 1
11928: PPUSH
11929: LD_INT 100
11931: PPUSH
11932: CALL_OW 12
11936: PUSH
11937: LD_INT 1
11939: DOUBLE
11940: GREATEREQUAL
11941: IFFALSE 11949
11943: LD_INT 10
11945: DOUBLE
11946: LESSEQUAL
11947: IFTRUE 11951
11949: GO 11975
11951: POP
// PrepareHuman ( 0 , class_soldier , Rand ( 3 , 6 ) ) ; 11 .. 60 :
11952: LD_INT 0
11954: PPUSH
11955: LD_INT 1
11957: PPUSH
11958: LD_INT 3
11960: PPUSH
11961: LD_INT 6
11963: PPUSH
11964: CALL_OW 12
11968: PPUSH
11969: CALL_OW 380
11973: GO 12090
11975: LD_INT 11
11977: DOUBLE
11978: GREATEREQUAL
11979: IFFALSE 11987
11981: LD_INT 60
11983: DOUBLE
11984: LESSEQUAL
11985: IFTRUE 11989
11987: GO 12013
11989: POP
// PrepareHuman ( 0 , class_mechanic , Rand ( 3 , 6 ) ) ; 61 .. 90 :
11990: LD_INT 0
11992: PPUSH
11993: LD_INT 3
11995: PPUSH
11996: LD_INT 3
11998: PPUSH
11999: LD_INT 6
12001: PPUSH
12002: CALL_OW 12
12006: PPUSH
12007: CALL_OW 380
12011: GO 12090
12013: LD_INT 61
12015: DOUBLE
12016: GREATEREQUAL
12017: IFFALSE 12025
12019: LD_INT 90
12021: DOUBLE
12022: LESSEQUAL
12023: IFTRUE 12027
12025: GO 12051
12027: POP
// PrepareHuman ( 0 , class_engineer , Rand ( 3 , 6 ) ) ; 91 .. 100 :
12028: LD_INT 0
12030: PPUSH
12031: LD_INT 2
12033: PPUSH
12034: LD_INT 3
12036: PPUSH
12037: LD_INT 6
12039: PPUSH
12040: CALL_OW 12
12044: PPUSH
12045: CALL_OW 380
12049: GO 12090
12051: LD_INT 91
12053: DOUBLE
12054: GREATEREQUAL
12055: IFFALSE 12063
12057: LD_INT 100
12059: DOUBLE
12060: LESSEQUAL
12061: IFTRUE 12065
12063: GO 12089
12065: POP
// PrepareHuman ( 0 , class_scientistic , Rand ( 3 , 6 ) ) ; end ;
12066: LD_INT 0
12068: PPUSH
12069: LD_INT 4
12071: PPUSH
12072: LD_INT 3
12074: PPUSH
12075: LD_INT 6
12077: PPUSH
12078: CALL_OW 12
12082: PPUSH
12083: CALL_OW 380
12087: GO 12090
12089: POP
// auto := Rand ( 1 , ( 0 + vehicle_set ) ) ;
12090: LD_ADDR_VAR 0 4
12094: PUSH
12095: LD_INT 1
12097: PPUSH
12098: LD_INT 0
12100: PUSH
12101: LD_VAR 0 2
12105: PLUS
12106: PPUSH
12107: CALL_OW 12
12111: ST_TO_ADDR
// vc_chassis := vehicle_set [ auto ] [ 1 ] ;
12112: LD_ADDR_OWVAR 37
12116: PUSH
12117: LD_VAR 0 2
12121: PUSH
12122: LD_VAR 0 4
12126: ARRAY
12127: PUSH
12128: LD_INT 1
12130: ARRAY
12131: ST_TO_ADDR
// vc_engine := vehicle_set [ auto ] [ 2 ] ;
12132: LD_ADDR_OWVAR 39
12136: PUSH
12137: LD_VAR 0 2
12141: PUSH
12142: LD_VAR 0 4
12146: ARRAY
12147: PUSH
12148: LD_INT 2
12150: ARRAY
12151: ST_TO_ADDR
// vc_weapon := vehicle_set [ auto ] [ 3 ] ;
12152: LD_ADDR_OWVAR 40
12156: PUSH
12157: LD_VAR 0 2
12161: PUSH
12162: LD_VAR 0 4
12166: ARRAY
12167: PUSH
12168: LD_INT 3
12170: ARRAY
12171: ST_TO_ADDR
// vc_control := vehicle_set [ auto ] [ 4 ] ;
12172: LD_ADDR_OWVAR 38
12176: PUSH
12177: LD_VAR 0 2
12181: PUSH
12182: LD_VAR 0 4
12186: ARRAY
12187: PUSH
12188: LD_INT 4
12190: ARRAY
12191: ST_TO_ADDR
// attack := attack union CreateVehicle ;
12192: LD_ADDR_EXP 7
12196: PUSH
12197: LD_EXP 7
12201: PUSH
12202: CALL_OW 45
12206: UNION
12207: ST_TO_ADDR
// abc := CreateHuman ;
12208: LD_ADDR_VAR 0 5
12212: PUSH
12213: CALL_OW 44
12217: ST_TO_ADDR
// PlaceHumanInUnit ( abc , attack [ j ] ) ;
12218: LD_VAR 0 5
12222: PPUSH
12223: LD_EXP 7
12227: PUSH
12228: LD_VAR 0 3
12232: ARRAY
12233: PPUSH
12234: CALL_OW 52
// SetSkill ( abc , skill_mechanical , Rand ( 3 , 7 ) ) ;
12238: LD_VAR 0 5
12242: PPUSH
12243: LD_INT 3
12245: PPUSH
12246: LD_INT 3
12248: PPUSH
12249: LD_INT 7
12251: PPUSH
12252: CALL_OW 12
12256: PPUSH
12257: CALL_OW 237
// SetFuel ( attack [ j ] , Rand ( 70 , 95 ) ) ;
12261: LD_EXP 7
12265: PUSH
12266: LD_VAR 0 3
12270: ARRAY
12271: PPUSH
12272: LD_INT 70
12274: PPUSH
12275: LD_INT 95
12277: PPUSH
12278: CALL_OW 12
12282: PPUSH
12283: CALL_OW 240
// SetLives ( attack [ j ] , Rand ( 900 , 1000 ) ) ;
12287: LD_EXP 7
12291: PUSH
12292: LD_VAR 0 3
12296: ARRAY
12297: PPUSH
12298: LD_INT 900
12300: PPUSH
12301: LD_INT 1000
12303: PPUSH
12304: CALL_OW 12
12308: PPUSH
12309: CALL_OW 234
// end ;
12313: GO 11889
12315: POP
12316: POP
// end ;
12317: LD_VAR 0 1
12321: RET
// every 0 0$1 marked 10 do var waypoints , points , filterex , filterin , rnd , j ;
12322: GO 12324
12324: DISABLE
12325: LD_INT 0
12327: PPUSH
12328: PPUSH
12329: PPUSH
12330: PPUSH
12331: PPUSH
12332: PPUSH
// begin waypoints := [ [ 98 , 6 ] , [ 94 , 9 ] , [ 90 , 14 ] , [ 87 , 17 ] , [ 81 , 18 ] , [ 80 , 23 ] ] ;
12333: LD_ADDR_VAR 0 1
12337: PUSH
12338: LD_INT 98
12340: PUSH
12341: LD_INT 6
12343: PUSH
12344: EMPTY
12345: LIST
12346: LIST
12347: PUSH
12348: LD_INT 94
12350: PUSH
12351: LD_INT 9
12353: PUSH
12354: EMPTY
12355: LIST
12356: LIST
12357: PUSH
12358: LD_INT 90
12360: PUSH
12361: LD_INT 14
12363: PUSH
12364: EMPTY
12365: LIST
12366: LIST
12367: PUSH
12368: LD_INT 87
12370: PUSH
12371: LD_INT 17
12373: PUSH
12374: EMPTY
12375: LIST
12376: LIST
12377: PUSH
12378: LD_INT 81
12380: PUSH
12381: LD_INT 18
12383: PUSH
12384: EMPTY
12385: LIST
12386: LIST
12387: PUSH
12388: LD_INT 80
12390: PUSH
12391: LD_INT 23
12393: PUSH
12394: EMPTY
12395: LIST
12396: LIST
12397: PUSH
12398: EMPTY
12399: LIST
12400: LIST
12401: LIST
12402: LIST
12403: LIST
12404: LIST
12405: ST_TO_ADDR
// for j := 1 to ( 0 + waypointsEND ) do
12406: LD_ADDR_VAR 0 6
12410: PUSH
12411: DOUBLE
12412: LD_INT 1
12414: DEC
12415: ST_TO_ADDR
12416: LD_INT 0
12418: PUSH
12419: LD_EXP 63
12423: PLUS
12424: PUSH
12425: FOR_TO
12426: IFFALSE 13138
// begin Wait ( Rand ( 0 0$5 , 0 0$10 ) ) ;
12428: LD_INT 175
12430: PPUSH
12431: LD_INT 350
12433: PPUSH
12434: CALL_OW 12
12438: PPUSH
12439: CALL_OW 67
// PlaceUnitArea ( attack [ j ] , EnterArea , false ) ;
12443: LD_EXP 7
12447: PUSH
12448: LD_VAR 0 6
12452: ARRAY
12453: PPUSH
12454: LD_INT 4
12456: PPUSH
12457: LD_INT 0
12459: PPUSH
12460: CALL_OW 49
// if j = 1 then
12464: LD_VAR 0 6
12468: PUSH
12469: LD_INT 1
12471: EQUAL
12472: IFFALSE 12483
// begin disable ( 18 ) ;
12474: LD_INT 18
12476: DISABLE_MARKED
// enable ( 9 ) ;
12477: LD_INT 9
12479: ENABLE_MARKED
// enable ( 19 ) ;
12480: LD_INT 19
12482: ENABLE_MARKED
// end ; for points in waypoints do
12483: LD_ADDR_VAR 0 2
12487: PUSH
12488: LD_VAR 0 1
12492: PUSH
12493: FOR_IN
12494: IFFALSE 12632
// begin case Rand ( 1 , 2 ) of 1 :
12496: LD_INT 1
12498: PPUSH
12499: LD_INT 2
12501: PPUSH
12502: CALL_OW 12
12506: PUSH
12507: LD_INT 1
12509: DOUBLE
12510: EQUAL
12511: IFTRUE 12515
12513: GO 12568
12515: POP
// if IsOK ( attack [ j ] ) then
12516: LD_EXP 7
12520: PUSH
12521: LD_VAR 0 6
12525: ARRAY
12526: PPUSH
12527: CALL_OW 302
12531: IFFALSE 12566
// ComAgressiveMove ( attack [ j ] , points [ 1 ] , points [ 2 ] ) ; 2 :
12533: LD_EXP 7
12537: PUSH
12538: LD_VAR 0 6
12542: ARRAY
12543: PPUSH
12544: LD_VAR 0 2
12548: PUSH
12549: LD_INT 1
12551: ARRAY
12552: PPUSH
12553: LD_VAR 0 2
12557: PUSH
12558: LD_INT 2
12560: ARRAY
12561: PPUSH
12562: CALL_OW 114
12566: GO 12630
12568: LD_INT 2
12570: DOUBLE
12571: EQUAL
12572: IFTRUE 12576
12574: GO 12629
12576: POP
// if IsOK ( attack [ j ] ) then
12577: LD_EXP 7
12581: PUSH
12582: LD_VAR 0 6
12586: ARRAY
12587: PPUSH
12588: CALL_OW 302
12592: IFFALSE 12627
// AddComMoveXY ( attack [ j ] , points [ 1 ] , points [ 2 ] ) ; end ;
12594: LD_EXP 7
12598: PUSH
12599: LD_VAR 0 6
12603: ARRAY
12604: PPUSH
12605: LD_VAR 0 2
12609: PUSH
12610: LD_INT 1
12612: ARRAY
12613: PPUSH
12614: LD_VAR 0 2
12618: PUSH
12619: LD_INT 2
12621: ARRAY
12622: PPUSH
12623: CALL_OW 171
12627: GO 12630
12629: POP
// end ;
12630: GO 12493
12632: POP
12633: POP
// filterex := FilterUnitsExceptArea ( KnollArea , [ f_type , unit_building ] ) ;
12634: LD_ADDR_VAR 0 3
12638: PUSH
12639: LD_INT 2
12641: PPUSH
12642: LD_INT 21
12644: PUSH
12645: LD_INT 3
12647: PUSH
12648: EMPTY
12649: LIST
12650: LIST
12651: PPUSH
12652: CALL_OW 71
12656: ST_TO_ADDR
// filterin := FilterUnitsInArea ( KnollArea , [ f_type , unit_building ] ) ;
12657: LD_ADDR_VAR 0 4
12661: PUSH
12662: LD_INT 2
12664: PPUSH
12665: LD_INT 21
12667: PUSH
12668: LD_INT 3
12670: PUSH
12671: EMPTY
12672: LIST
12673: LIST
12674: PPUSH
12675: CALL_OW 70
12679: ST_TO_ADDR
// if 0 + filterin >= 0 + filterex then
12680: LD_INT 0
12682: PUSH
12683: LD_VAR 0 4
12687: PLUS
12688: PUSH
12689: LD_INT 0
12691: PUSH
12692: LD_VAR 0 3
12696: PLUS
12697: GREATEREQUAL
12698: IFFALSE 12967
// begin case Rand ( 1 , 2 ) of 1 :
12700: LD_INT 1
12702: PPUSH
12703: LD_INT 2
12705: PPUSH
12706: CALL_OW 12
12710: PUSH
12711: LD_INT 1
12713: DOUBLE
12714: EQUAL
12715: IFTRUE 12719
12717: GO 12784
12719: POP
// if IsOK ( attack [ j ] ) then
12720: LD_EXP 7
12724: PUSH
12725: LD_VAR 0 6
12729: ARRAY
12730: PPUSH
12731: CALL_OW 302
12735: IFFALSE 12782
// AddComAgressiveMove ( attack [ j ] , waypointsEND [ j ] [ 1 ] , waypointsEND [ j ] [ 2 ] ) ; 2 :
12737: LD_EXP 7
12741: PUSH
12742: LD_VAR 0 6
12746: ARRAY
12747: PPUSH
12748: LD_EXP 63
12752: PUSH
12753: LD_VAR 0 6
12757: ARRAY
12758: PUSH
12759: LD_INT 1
12761: ARRAY
12762: PPUSH
12763: LD_EXP 63
12767: PUSH
12768: LD_VAR 0 6
12772: ARRAY
12773: PUSH
12774: LD_INT 2
12776: ARRAY
12777: PPUSH
12778: CALL_OW 174
12782: GO 12858
12784: LD_INT 2
12786: DOUBLE
12787: EQUAL
12788: IFTRUE 12792
12790: GO 12857
12792: POP
// if IsOK ( attack [ j ] ) then
12793: LD_EXP 7
12797: PUSH
12798: LD_VAR 0 6
12802: ARRAY
12803: PPUSH
12804: CALL_OW 302
12808: IFFALSE 12855
// AddComMoveXY ( attack [ j ] , waypointsEND [ j ] [ 1 ] , waypointsEND [ j ] [ 2 ] ) ; end ;
12810: LD_EXP 7
12814: PUSH
12815: LD_VAR 0 6
12819: ARRAY
12820: PPUSH
12821: LD_EXP 63
12825: PUSH
12826: LD_VAR 0 6
12830: ARRAY
12831: PUSH
12832: LD_INT 1
12834: ARRAY
12835: PPUSH
12836: LD_EXP 63
12840: PUSH
12841: LD_VAR 0 6
12845: ARRAY
12846: PUSH
12847: LD_INT 2
12849: ARRAY
12850: PPUSH
12851: CALL_OW 171
12855: GO 12858
12857: POP
// if 0 + filterex > 0 then
12858: LD_INT 0
12860: PUSH
12861: LD_VAR 0 3
12865: PLUS
12866: PUSH
12867: LD_INT 0
12869: GREATER
12870: IFFALSE 12965
// begin Wait ( 10 ) ;
12872: LD_INT 10
12874: PPUSH
12875: CALL_OW 67
// rnd := Rand ( 1 , 0 + filterex ) ;
12879: LD_ADDR_VAR 0 5
12883: PUSH
12884: LD_INT 1
12886: PPUSH
12887: LD_INT 0
12889: PUSH
12890: LD_VAR 0 3
12894: PLUS
12895: PPUSH
12896: CALL_OW 12
12900: ST_TO_ADDR
// if IsOK ( attack [ j ] ) then
12901: LD_EXP 7
12905: PUSH
12906: LD_VAR 0 6
12910: ARRAY
12911: PPUSH
12912: CALL_OW 302
12916: IFFALSE 12965
// AddComAgressiveMove ( attack [ j ] , GetX ( filterex [ rnd ] ) , GetY ( filterex [ rnd ] ) ) ;
12918: LD_EXP 7
12922: PUSH
12923: LD_VAR 0 6
12927: ARRAY
12928: PPUSH
12929: LD_VAR 0 3
12933: PUSH
12934: LD_VAR 0 5
12938: ARRAY
12939: PPUSH
12940: CALL_OW 250
12944: PPUSH
12945: LD_VAR 0 3
12949: PUSH
12950: LD_VAR 0 5
12954: ARRAY
12955: PPUSH
12956: CALL_OW 251
12960: PPUSH
12961: CALL_OW 174
// end ; end else
12965: GO 13136
// begin if 0 + filterex > 0 then
12967: LD_INT 0
12969: PUSH
12970: LD_VAR 0 3
12974: PLUS
12975: PUSH
12976: LD_INT 0
12978: GREATER
12979: IFFALSE 13074
// begin rnd := Rand ( 1 , 0 + filterex ) ;
12981: LD_ADDR_VAR 0 5
12985: PUSH
12986: LD_INT 1
12988: PPUSH
12989: LD_INT 0
12991: PUSH
12992: LD_VAR 0 3
12996: PLUS
12997: PPUSH
12998: CALL_OW 12
13002: ST_TO_ADDR
// if IsOK ( attack [ j ] ) then
13003: LD_EXP 7
13007: PUSH
13008: LD_VAR 0 6
13012: ARRAY
13013: PPUSH
13014: CALL_OW 302
13018: IFFALSE 13067
// AddComAgressiveMove ( attack [ j ] , GetX ( filterex [ rnd ] ) , GetY ( filterex [ rnd ] ) ) ;
13020: LD_EXP 7
13024: PUSH
13025: LD_VAR 0 6
13029: ARRAY
13030: PPUSH
13031: LD_VAR 0 3
13035: PUSH
13036: LD_VAR 0 5
13040: ARRAY
13041: PPUSH
13042: CALL_OW 250
13046: PPUSH
13047: LD_VAR 0 3
13051: PUSH
13052: LD_VAR 0 5
13056: ARRAY
13057: PPUSH
13058: CALL_OW 251
13062: PPUSH
13063: CALL_OW 174
// Wait ( 10 ) ;
13067: LD_INT 10
13069: PPUSH
13070: CALL_OW 67
// end ; if IsOK ( attack [ j ] ) then
13074: LD_EXP 7
13078: PUSH
13079: LD_VAR 0 6
13083: ARRAY
13084: PPUSH
13085: CALL_OW 302
13089: IFFALSE 13136
// AddComAgressiveMove ( attack [ j ] , waypointsEND [ j ] [ 1 ] , waypointsEND [ j ] [ 2 ] ) ;
13091: LD_EXP 7
13095: PUSH
13096: LD_VAR 0 6
13100: ARRAY
13101: PPUSH
13102: LD_EXP 63
13106: PUSH
13107: LD_VAR 0 6
13111: ARRAY
13112: PUSH
13113: LD_INT 1
13115: ARRAY
13116: PPUSH
13117: LD_EXP 63
13121: PUSH
13122: LD_VAR 0 6
13126: ARRAY
13127: PUSH
13128: LD_INT 2
13130: ARRAY
13131: PPUSH
13132: CALL_OW 174
// end ; end ;
13136: GO 12425
13138: POP
13139: POP
// Wait ( 0 0$20 ) ;
13140: LD_INT 700
13142: PPUSH
13143: CALL_OW 67
// Dialogue7a ;
13147: CALL 6923 0 0
// enable ( 16 ) ;
13151: LD_INT 16
13153: ENABLE_MARKED
// Wait ( 0 0$15 ) ;
13154: LD_INT 525
13156: PPUSH
13157: CALL_OW 67
// Dialogue8 ;
13161: CALL 6955 0 0
// Wait ( 0 0$15 ) ;
13165: LD_INT 525
13167: PPUSH
13168: CALL_OW 67
// Dialogue9 ;
13172: CALL 7455 0 0
// Wait ( 0 0$15 ) ;
13176: LD_INT 525
13178: PPUSH
13179: CALL_OW 67
// create_gaydar ;
13183: CALL 2620 0 0
// Wait ( 0 0$34 ) ;
13187: LD_INT 1190
13189: PPUSH
13190: CALL_OW 67
// enable ( 14 ) ;
13194: LD_INT 14
13196: ENABLE_MARKED
// end ;
13197: PPOPN 6
13199: END
// every 0 0$10 marked 14 do var i , un , live_attack ;
13200: GO 13202
13202: DISABLE
13203: LD_INT 0
13205: PPUSH
13206: PPUSH
13207: PPUSH
// begin live_attack := [ ] ;
13208: LD_ADDR_VAR 0 3
13212: PUSH
13213: EMPTY
13214: ST_TO_ADDR
// for un in attack do
13215: LD_ADDR_VAR 0 2
13219: PUSH
13220: LD_EXP 7
13224: PUSH
13225: FOR_IN
13226: IFFALSE 13290
// begin Wait ( 2 ) ;
13228: LD_INT 2
13230: PPUSH
13231: CALL_OW 67
// if ( IsOK ( un ) ) and ( not HasTask ( un ) ) then
13235: LD_VAR 0 2
13239: PPUSH
13240: CALL_OW 302
13244: PUSH
13245: LD_VAR 0 2
13249: PPUSH
13250: CALL_OW 314
13254: NOT
13255: AND
13256: IFFALSE 13288
// begin live_attack := live_attack union un ;
13258: LD_ADDR_VAR 0 3
13262: PUSH
13263: LD_VAR 0 3
13267: PUSH
13268: LD_VAR 0 2
13272: UNION
13273: ST_TO_ADDR
// i := i + 1 ;
13274: LD_ADDR_VAR 0 1
13278: PUSH
13279: LD_VAR 0 1
13283: PUSH
13284: LD_INT 1
13286: PLUS
13287: ST_TO_ADDR
// end ; end ;
13288: GO 13225
13290: POP
13291: POP
// if i > ( 0 + live_attack ) * 0.7 then
13292: LD_VAR 0 1
13296: PUSH
13297: LD_INT 0
13299: PUSH
13300: LD_VAR 0 3
13304: PLUS
13305: PUSH
13306: LD_REAL  7.00000000000000E-0001
13309: MUL
13310: GREATER
13311: IFFALSE 13317
// steal_player_buildings ;
13313: CALL 13352 0 0
// if i = ( 0 + live_attack ) then
13317: LD_VAR 0 1
13321: PUSH
13322: LD_INT 0
13324: PUSH
13325: LD_VAR 0 3
13329: PLUS
13330: EQUAL
13331: IFFALSE 13348
// ComAgressiveMove ( live_attack , 73 , 139 ) ;
13333: LD_VAR 0 3
13337: PPUSH
13338: LD_INT 73
13340: PPUSH
13341: LD_INT 139
13343: PPUSH
13344: CALL_OW 114
// enable ;
13348: ENABLE
// end ;
13349: PPOPN 3
13351: END
// export function steal_player_buildings ; var my_filter_depot , my_filter_other , i , veh ; begin
13352: LD_INT 0
13354: PPUSH
13355: PPUSH
13356: PPUSH
13357: PPUSH
13358: PPUSH
// my_filter_depot := FilterUnitsInArea ( KnollArea , [ [ f_side , you ] , [ [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] ] ] ) ;
13359: LD_ADDR_VAR 0 2
13363: PUSH
13364: LD_INT 2
13366: PPUSH
13367: LD_INT 22
13369: PUSH
13370: LD_EXP 4
13374: PUSH
13375: EMPTY
13376: LIST
13377: LIST
13378: PUSH
13379: LD_INT 2
13381: PUSH
13382: LD_INT 30
13384: PUSH
13385: LD_INT 0
13387: PUSH
13388: EMPTY
13389: LIST
13390: LIST
13391: PUSH
13392: LD_INT 30
13394: PUSH
13395: LD_INT 1
13397: PUSH
13398: EMPTY
13399: LIST
13400: LIST
13401: PUSH
13402: EMPTY
13403: LIST
13404: LIST
13405: LIST
13406: PUSH
13407: EMPTY
13408: LIST
13409: PUSH
13410: EMPTY
13411: LIST
13412: LIST
13413: PPUSH
13414: CALL_OW 70
13418: ST_TO_ADDR
// my_filter_other := FilterUnitsInArea ( KnollArea , [ [ f_side , you ] , [ [ f_not , [ f_btype , b_depot ] ] , [ f_type , unit_building ] ] ] ) ;
13419: LD_ADDR_VAR 0 3
13423: PUSH
13424: LD_INT 2
13426: PPUSH
13427: LD_INT 22
13429: PUSH
13430: LD_EXP 4
13434: PUSH
13435: EMPTY
13436: LIST
13437: LIST
13438: PUSH
13439: LD_INT 3
13441: PUSH
13442: LD_INT 30
13444: PUSH
13445: LD_INT 0
13447: PUSH
13448: EMPTY
13449: LIST
13450: LIST
13451: PUSH
13452: EMPTY
13453: LIST
13454: LIST
13455: PUSH
13456: LD_INT 21
13458: PUSH
13459: LD_INT 3
13461: PUSH
13462: EMPTY
13463: LIST
13464: LIST
13465: PUSH
13466: EMPTY
13467: LIST
13468: LIST
13469: PUSH
13470: EMPTY
13471: LIST
13472: LIST
13473: PPUSH
13474: CALL_OW 70
13478: ST_TO_ADDR
// if ( 0 + my_filter_depot ) > 0 or ( 0 + my_filter_other ) > 0 then
13479: LD_INT 0
13481: PUSH
13482: LD_VAR 0 2
13486: PLUS
13487: PUSH
13488: LD_INT 0
13490: GREATER
13491: PUSH
13492: LD_INT 0
13494: PUSH
13495: LD_VAR 0 3
13499: PLUS
13500: PUSH
13501: LD_INT 0
13503: GREATER
13504: OR
13505: IFFALSE 13719
// begin for veh in attack do
13507: LD_ADDR_VAR 0 5
13511: PUSH
13512: LD_EXP 7
13516: PUSH
13517: FOR_IN
13518: IFFALSE 13583
// begin if IsDrivenBy ( veh ) <> 0 and GetClass ( IsDrivenBy ( veh ) ) = classtype_engineer then
13520: LD_VAR 0 5
13524: PPUSH
13525: CALL_OW 311
13529: PUSH
13530: LD_INT 0
13532: NONEQUAL
13533: PUSH
13534: LD_VAR 0 5
13538: PPUSH
13539: CALL_OW 311
13543: PPUSH
13544: CALL_OW 257
13548: PUSH
13549: LD_INT 2
13551: EQUAL
13552: AND
13553: IFFALSE 13581
// begin driver := IsDrivenBy ( veh ) ;
13555: LD_ADDR_EXP 52
13559: PUSH
13560: LD_VAR 0 5
13564: PPUSH
13565: CALL_OW 311
13569: ST_TO_ADDR
// ComExitVehicle ( driver ) ;
13570: LD_EXP 52
13574: PPUSH
13575: CALL_OW 121
// break ;
13579: GO 13583
// end ; end ;
13581: GO 13517
13583: POP
13584: POP
// Wait ( 10 ) ;
13585: LD_INT 10
13587: PPUSH
13588: CALL_OW 67
// if ( 0 + my_filter_depot ) > 0 then
13592: LD_INT 0
13594: PUSH
13595: LD_VAR 0 2
13599: PLUS
13600: PUSH
13601: LD_INT 0
13603: GREATER
13604: IFFALSE 13652
// for i := 1 to ( my_filter_depot + 0 ) do
13606: LD_ADDR_VAR 0 4
13610: PUSH
13611: DOUBLE
13612: LD_INT 1
13614: DEC
13615: ST_TO_ADDR
13616: LD_VAR 0 2
13620: PUSH
13621: LD_INT 0
13623: PLUS
13624: PUSH
13625: FOR_TO
13626: IFFALSE 13650
// AddComEnterUnit ( driver , my_filter_depot [ i ] ) ;
13628: LD_EXP 52
13632: PPUSH
13633: LD_VAR 0 2
13637: PUSH
13638: LD_VAR 0 4
13642: ARRAY
13643: PPUSH
13644: CALL_OW 180
13648: GO 13625
13650: POP
13651: POP
// Wait ( 10 ) ;
13652: LD_INT 10
13654: PPUSH
13655: CALL_OW 67
// if ( 0 + my_filter_other ) > 0 then
13659: LD_INT 0
13661: PUSH
13662: LD_VAR 0 3
13666: PLUS
13667: PUSH
13668: LD_INT 0
13670: GREATER
13671: IFFALSE 13719
// for i := 1 to ( my_filter_other + 0 ) do
13673: LD_ADDR_VAR 0 4
13677: PUSH
13678: DOUBLE
13679: LD_INT 1
13681: DEC
13682: ST_TO_ADDR
13683: LD_VAR 0 3
13687: PUSH
13688: LD_INT 0
13690: PLUS
13691: PUSH
13692: FOR_TO
13693: IFFALSE 13717
// AddComEnterUnit ( driver , my_filter_other [ i ] ) ;
13695: LD_EXP 52
13699: PPUSH
13700: LD_VAR 0 3
13704: PUSH
13705: LD_VAR 0 4
13709: ARRAY
13710: PPUSH
13711: CALL_OW 180
13715: GO 13692
13717: POP
13718: POP
// end ; end ;
13719: LD_VAR 0 1
13723: RET
// every 0 0$1 + 0 0$0.6 marked 9 do
13724: GO 13726
13726: DISABLE
// begin if See ( you , attack [ 1 ] ) then
13727: LD_EXP 4
13731: PPUSH
13732: LD_EXP 7
13736: PUSH
13737: LD_INT 1
13739: ARRAY
13740: PPUSH
13741: CALL_OW 292
13745: IFFALSE 13760
// begin Dialogue7 ;
13747: CALL 6440 0 0
// disable ;
13751: DISABLE
// Disabled9 := true ;
13752: LD_ADDR_EXP 68
13756: PUSH
13757: LD_INT 1
13759: ST_TO_ADDR
// end ; if not disabled9 then
13760: LD_EXP 68
13764: NOT
13765: IFFALSE 13768
// enable ;
13767: ENABLE
// end ;
13768: END
// every 0 0$1 marked 16 do var un1 , un2 , un_mem , distance , my_filter ;
13769: GO 13771
13771: DISABLE
13772: LD_INT 0
13774: PPUSH
13775: PPUSH
13776: PPUSH
13777: PPUSH
13778: PPUSH
// begin my_filter := FilterAllUnits ( [ [ f_side , you ] , [ f_or , [ f_type , unit_human ] , [ f_type , unit_vehicle ] , [ f_btype , b_bunker ] , [ f_btype , b_breastwork ] ] ] ) ;
13779: LD_ADDR_VAR 0 5
13783: PUSH
13784: LD_INT 22
13786: PUSH
13787: LD_EXP 4
13791: PUSH
13792: EMPTY
13793: LIST
13794: LIST
13795: PUSH
13796: LD_INT 2
13798: PUSH
13799: LD_INT 21
13801: PUSH
13802: LD_INT 1
13804: PUSH
13805: EMPTY
13806: LIST
13807: LIST
13808: PUSH
13809: LD_INT 21
13811: PUSH
13812: LD_INT 2
13814: PUSH
13815: EMPTY
13816: LIST
13817: LIST
13818: PUSH
13819: LD_INT 30
13821: PUSH
13822: LD_INT 32
13824: PUSH
13825: EMPTY
13826: LIST
13827: LIST
13828: PUSH
13829: LD_INT 30
13831: PUSH
13832: LD_INT 31
13834: PUSH
13835: EMPTY
13836: LIST
13837: LIST
13838: PUSH
13839: EMPTY
13840: LIST
13841: LIST
13842: LIST
13843: LIST
13844: LIST
13845: PUSH
13846: EMPTY
13847: LIST
13848: LIST
13849: PPUSH
13850: CALL_OW 69
13854: ST_TO_ADDR
// if my_filter = 0 then
13855: LD_VAR 0 5
13859: PUSH
13860: LD_INT 0
13862: EQUAL
13863: IFFALSE 13887
// my_filter := FilterAllUnits ( [ f_side , you ] ) ;
13865: LD_ADDR_VAR 0 5
13869: PUSH
13870: LD_INT 22
13872: PUSH
13873: LD_EXP 4
13877: PUSH
13878: EMPTY
13879: LIST
13880: LIST
13881: PPUSH
13882: CALL_OW 69
13886: ST_TO_ADDR
// attack := UnitFilter ( attack , [ f_ok ] ) ;
13887: LD_ADDR_EXP 7
13891: PUSH
13892: LD_EXP 7
13896: PPUSH
13897: LD_INT 50
13899: PUSH
13900: EMPTY
13901: LIST
13902: PPUSH
13903: CALL_OW 72
13907: ST_TO_ADDR
// if my_filter > 0 and attack > 0 then
13908: LD_VAR 0 5
13912: PUSH
13913: LD_INT 0
13915: GREATER
13916: PUSH
13917: LD_EXP 7
13921: PUSH
13922: LD_INT 0
13924: GREATER
13925: AND
13926: IFFALSE 14083
// for un1 in attack do
13928: LD_ADDR_VAR 0 1
13932: PUSH
13933: LD_EXP 7
13937: PUSH
13938: FOR_IN
13939: IFFALSE 14081
// begin if IsOK ( un1 ) then
13941: LD_VAR 0 1
13945: PPUSH
13946: CALL_OW 302
13950: IFFALSE 14072
// begin distance := GetDistUnits ( un1 , Burlak ) ;
13952: LD_ADDR_VAR 0 4
13956: PUSH
13957: LD_VAR 0 1
13961: PPUSH
13962: LD_EXP 14
13966: PPUSH
13967: CALL_OW 296
13971: ST_TO_ADDR
// un_mem := Burlak ;
13972: LD_ADDR_VAR 0 3
13976: PUSH
13977: LD_EXP 14
13981: ST_TO_ADDR
// for un2 in my_filter do
13982: LD_ADDR_VAR 0 2
13986: PUSH
13987: LD_VAR 0 5
13991: PUSH
13992: FOR_IN
13993: IFFALSE 14056
// begin if distance > GetDistUnits ( un1 , un2 ) then
13995: LD_VAR 0 4
13999: PUSH
14000: LD_VAR 0 1
14004: PPUSH
14005: LD_VAR 0 2
14009: PPUSH
14010: CALL_OW 296
14014: GREATER
14015: IFFALSE 14047
// begin distance := GetDistUnits ( un1 , un2 ) ;
14017: LD_ADDR_VAR 0 4
14021: PUSH
14022: LD_VAR 0 1
14026: PPUSH
14027: LD_VAR 0 2
14031: PPUSH
14032: CALL_OW 296
14036: ST_TO_ADDR
// un_mem := un2 ;
14037: LD_ADDR_VAR 0 3
14041: PUSH
14042: LD_VAR 0 2
14046: ST_TO_ADDR
// end ; Wait ( 3 ) ;
14047: LD_INT 3
14049: PPUSH
14050: CALL_OW 67
// end ;
14054: GO 13992
14056: POP
14057: POP
// ComAttackUnit ( un1 , un_mem ) ;
14058: LD_VAR 0 1
14062: PPUSH
14063: LD_VAR 0 3
14067: PPUSH
14068: CALL_OW 115
// end ; Wait ( 3 ) ;
14072: LD_INT 3
14074: PPUSH
14075: CALL_OW 67
// end ;
14079: GO 13938
14081: POP
14082: POP
// if attack > 0 then
14083: LD_EXP 7
14087: PUSH
14088: LD_INT 0
14090: GREATER
14091: IFFALSE 14094
// enable ;
14093: ENABLE
// end ; end_of_file
14094: PPOPN 5
14096: END
// export function prepare_small_arabian_attack ; var j ; begin
14097: LD_INT 0
14099: PPUSH
14100: PPUSH
// sm_attack1 := [ ] ;
14101: LD_ADDR_EXP 9
14105: PUSH
14106: EMPTY
14107: ST_TO_ADDR
// sm_attack2 := [ ] ;
14108: LD_ADDR_EXP 10
14112: PUSH
14113: EMPTY
14114: ST_TO_ADDR
// sm_attack3 := [ ] ;
14115: LD_ADDR_EXP 11
14119: PUSH
14120: EMPTY
14121: ST_TO_ADDR
// for j := 1 to ( 0 + attack_count ) do
14122: LD_ADDR_VAR 0 2
14126: PUSH
14127: DOUBLE
14128: LD_INT 1
14130: DEC
14131: ST_TO_ADDR
14132: LD_INT 0
14134: PUSH
14135: LD_EXP 49
14139: PLUS
14140: PUSH
14141: FOR_TO
14142: IFFALSE 14392
// begin uc_side := arab ;
14144: LD_ADDR_OWVAR 20
14148: PUSH
14149: LD_EXP 6
14153: ST_TO_ADDR
// uc_nation := nation_arabian ;
14154: LD_ADDR_OWVAR 21
14158: PUSH
14159: LD_INT 2
14161: ST_TO_ADDR
// uc_direction := 2 ;
14162: LD_ADDR_OWVAR 24
14166: PUSH
14167: LD_INT 2
14169: ST_TO_ADDR
// hc_name :=  ;
14170: LD_ADDR_OWVAR 26
14174: PUSH
14175: LD_STRING 
14177: ST_TO_ADDR
// PrepareHuman ( 0 , class_soldier , Rand ( 2 , 5 ) ) ;
14178: LD_INT 0
14180: PPUSH
14181: LD_INT 1
14183: PPUSH
14184: LD_INT 2
14186: PPUSH
14187: LD_INT 5
14189: PPUSH
14190: CALL_OW 12
14194: PPUSH
14195: CALL_OW 380
// sm_attack1 := sm_attack1 union CreateHuman ;
14199: LD_ADDR_EXP 9
14203: PUSH
14204: LD_EXP 9
14208: PUSH
14209: CALL_OW 44
14213: UNION
14214: ST_TO_ADDR
// uc_side := arab ;
14215: LD_ADDR_OWVAR 20
14219: PUSH
14220: LD_EXP 6
14224: ST_TO_ADDR
// uc_nation := nation_arabian ;
14225: LD_ADDR_OWVAR 21
14229: PUSH
14230: LD_INT 2
14232: ST_TO_ADDR
// uc_direction := 3 ;
14233: LD_ADDR_OWVAR 24
14237: PUSH
14238: LD_INT 3
14240: ST_TO_ADDR
// hc_name :=  ;
14241: LD_ADDR_OWVAR 26
14245: PUSH
14246: LD_STRING 
14248: ST_TO_ADDR
// PrepareHuman ( 0 , class_soldier , Rand ( 2 , 5 ) ) ;
14249: LD_INT 0
14251: PPUSH
14252: LD_INT 1
14254: PPUSH
14255: LD_INT 2
14257: PPUSH
14258: LD_INT 5
14260: PPUSH
14261: CALL_OW 12
14265: PPUSH
14266: CALL_OW 380
// sm_attack2 := sm_attack2 union CreateHuman ;
14270: LD_ADDR_EXP 10
14274: PUSH
14275: LD_EXP 10
14279: PUSH
14280: CALL_OW 44
14284: UNION
14285: ST_TO_ADDR
// uc_side := arab ;
14286: LD_ADDR_OWVAR 20
14290: PUSH
14291: LD_EXP 6
14295: ST_TO_ADDR
// uc_nation := nation_arabian ;
14296: LD_ADDR_OWVAR 21
14300: PUSH
14301: LD_INT 2
14303: ST_TO_ADDR
// uc_direction := 3 ;
14304: LD_ADDR_OWVAR 24
14308: PUSH
14309: LD_INT 3
14311: ST_TO_ADDR
// hc_name :=  ;
14312: LD_ADDR_OWVAR 26
14316: PUSH
14317: LD_STRING 
14319: ST_TO_ADDR
// hc_basic_skills := [ 0 , 0 , 0 , 0 ] ;
14320: LD_ADDR_OWVAR 30
14324: PUSH
14325: LD_INT 0
14327: PUSH
14328: LD_INT 0
14330: PUSH
14331: LD_INT 0
14333: PUSH
14334: LD_INT 0
14336: PUSH
14337: EMPTY
14338: LIST
14339: LIST
14340: LIST
14341: LIST
14342: ST_TO_ADDR
// hc_skills := [ 0 , 0 , 0 , 0 ] ;
14343: LD_ADDR_OWVAR 31
14347: PUSH
14348: LD_INT 0
14350: PUSH
14351: LD_INT 0
14353: PUSH
14354: LD_INT 0
14356: PUSH
14357: LD_INT 0
14359: PUSH
14360: EMPTY
14361: LIST
14362: LIST
14363: LIST
14364: LIST
14365: ST_TO_ADDR
// hc_class := class_soldier ;
14366: LD_ADDR_OWVAR 28
14370: PUSH
14371: LD_INT 1
14373: ST_TO_ADDR
// sm_attack3 := sm_attack3 union CreateHuman ;
14374: LD_ADDR_EXP 11
14378: PUSH
14379: LD_EXP 11
14383: PUSH
14384: CALL_OW 44
14388: UNION
14389: ST_TO_ADDR
// end ;
14390: GO 14141
14392: POP
14393: POP
// end ;
14394: LD_VAR 0 1
14398: RET
// every 0 0$2 marked 11 do
14399: GO 14401
14401: DISABLE
// begin sm_pocet1_2 := sm_pocet1_2 + 1 ;
14402: LD_ADDR_EXP 64
14406: PUSH
14407: LD_EXP 64
14411: PUSH
14412: LD_INT 1
14414: PLUS
14415: ST_TO_ADDR
// PlaceUnitXY ( sm_attack1 [ sm_pocet1_2 ] , 19 , 2 , false ) ;
14416: LD_EXP 9
14420: PUSH
14421: LD_EXP 64
14425: ARRAY
14426: PPUSH
14427: LD_INT 19
14429: PPUSH
14430: LD_INT 2
14432: PPUSH
14433: LD_INT 0
14435: PPUSH
14436: CALL_OW 48
// ComMoveToArea ( sm_attack1 [ sm_pocet1_2 ] , PaloukArea ) ;
14440: LD_EXP 9
14444: PUSH
14445: LD_EXP 64
14449: ARRAY
14450: PPUSH
14451: LD_INT 6
14453: PPUSH
14454: CALL_OW 113
// PlaceUnitXY ( sm_attack2 [ sm_pocet1_2 ] , 103 , 1 , false ) ;
14458: LD_EXP 10
14462: PUSH
14463: LD_EXP 64
14467: ARRAY
14468: PPUSH
14469: LD_INT 103
14471: PPUSH
14472: LD_INT 1
14474: PPUSH
14475: LD_INT 0
14477: PPUSH
14478: CALL_OW 48
// ComMoveToArea ( sm_attack2 [ sm_pocet1_2 ] , EnterArea ) ;
14482: LD_EXP 10
14486: PUSH
14487: LD_EXP 64
14491: ARRAY
14492: PPUSH
14493: LD_INT 4
14495: PPUSH
14496: CALL_OW 113
// if sm_pocet1_2 < attack_count then
14500: LD_EXP 64
14504: PUSH
14505: LD_EXP 49
14509: LESS
14510: IFFALSE 14515
// enable else
14512: ENABLE
14513: GO 14520
// begin disable ;
14515: DISABLE
// make_small_attack ;
14516: CALL 14521 0 0
// end ; end ;
14520: END
// function make_small_attack ; var my_filter , i , at1 , at2 , distance , un , un_mem ; begin
14521: LD_INT 0
14523: PPUSH
14524: PPUSH
14525: PPUSH
14526: PPUSH
14527: PPUSH
14528: PPUSH
14529: PPUSH
14530: PPUSH
// ComAgressiveMove ( sm_attack1 , 33 , 28 ) ;
14531: LD_EXP 9
14535: PPUSH
14536: LD_INT 33
14538: PPUSH
14539: LD_INT 28
14541: PPUSH
14542: CALL_OW 114
// ComAgressiveMove ( sm_attack2 , 98 , 7 ) ;
14546: LD_EXP 10
14550: PPUSH
14551: LD_INT 98
14553: PPUSH
14554: LD_INT 7
14556: PPUSH
14557: CALL_OW 114
// Wait ( 0 0$20 ) ;
14561: LD_INT 700
14563: PPUSH
14564: CALL_OW 67
// AddComAgressiveMove ( sm_attack1 , 31 , 57 ) ;
14568: LD_EXP 9
14572: PPUSH
14573: LD_INT 31
14575: PPUSH
14576: LD_INT 57
14578: PPUSH
14579: CALL_OW 174
// AddComAgressiveMove ( sm_attack2 , 80 , 24 ) ;
14583: LD_EXP 10
14587: PPUSH
14588: LD_INT 80
14590: PPUSH
14591: LD_INT 24
14593: PPUSH
14594: CALL_OW 174
// Wait ( 0 0$20 ) ;
14598: LD_INT 700
14600: PPUSH
14601: CALL_OW 67
// AddComAgressiveMove ( sm_attack1 , 40 , 71 ) ;
14605: LD_EXP 9
14609: PPUSH
14610: LD_INT 40
14612: PPUSH
14613: LD_INT 71
14615: PPUSH
14616: CALL_OW 174
// AddComAgressiveMove ( sm_attack2 , 90 , 39 ) ;
14620: LD_EXP 10
14624: PPUSH
14625: LD_INT 90
14627: PPUSH
14628: LD_INT 39
14630: PPUSH
14631: CALL_OW 174
// Wait ( 0 0$20 ) ;
14635: LD_INT 700
14637: PPUSH
14638: CALL_OW 67
// AddComAgressiveMove ( sm_attack1 , 79 , 81 ) ;
14642: LD_EXP 9
14646: PPUSH
14647: LD_INT 79
14649: PPUSH
14650: LD_INT 81
14652: PPUSH
14653: CALL_OW 174
// AddComAgressiveMove ( sm_attack2 , 101 , 62 ) ;
14657: LD_EXP 10
14661: PPUSH
14662: LD_INT 101
14664: PPUSH
14665: LD_INT 62
14667: PPUSH
14668: CALL_OW 174
// Wait ( 0 0$20 ) ;
14672: LD_INT 700
14674: PPUSH
14675: CALL_OW 67
// my_filter := FilterUnitsInArea ( KnollArea , [ f_side , you ] ) ;
14679: LD_ADDR_VAR 0 2
14683: PUSH
14684: LD_INT 2
14686: PPUSH
14687: LD_INT 22
14689: PUSH
14690: LD_EXP 4
14694: PUSH
14695: EMPTY
14696: LIST
14697: LIST
14698: PPUSH
14699: CALL_OW 70
14703: ST_TO_ADDR
// if my_filter = 0 then
14704: LD_VAR 0 2
14708: PUSH
14709: LD_INT 0
14711: EQUAL
14712: IFFALSE 14749
// begin AddComAgressiveMove ( sm_attack1 , 73 , 138 ) ;
14714: LD_EXP 9
14718: PPUSH
14719: LD_INT 73
14721: PPUSH
14722: LD_INT 138
14724: PPUSH
14725: CALL_OW 174
// AddComAgressiveMove ( sm_attack2 , 73 , 138 ) ;
14729: LD_EXP 10
14733: PPUSH
14734: LD_INT 73
14736: PPUSH
14737: LD_INT 138
14739: PPUSH
14740: CALL_OW 174
// enable ( 12 ) ;
14744: LD_INT 12
14746: ENABLE_MARKED
// end else
14747: GO 14755
// begin enable ( 17 ) ;
14749: LD_INT 17
14751: ENABLE_MARKED
// enable ( 13 ) ;
14752: LD_INT 13
14754: ENABLE_MARKED
// end ; Wait ( 0 0$20 + attack_offset ) ;
14755: LD_INT 700
14757: PUSH
14758: LD_EXP 48
14762: PLUS
14763: PPUSH
14764: CALL_OW 67
// enable ( 10 ) ;
14768: LD_INT 10
14770: ENABLE_MARKED
// end ;
14771: LD_VAR 0 1
14775: RET
// every 0 0$0.9 marked 12 do var my_filter ;
14776: GO 14778
14778: DISABLE
14779: LD_INT 0
14781: PPUSH
// begin my_filter := FilterUnitsInArea ( BreakThruArea , [ f_side , arab ] ) ;
14782: LD_ADDR_VAR 0 1
14786: PUSH
14787: LD_INT 7
14789: PPUSH
14790: LD_INT 22
14792: PUSH
14793: LD_EXP 6
14797: PUSH
14798: EMPTY
14799: LIST
14800: LIST
14801: PPUSH
14802: CALL_OW 70
14806: ST_TO_ADDR
// if my_filter + 0 > 0 then
14807: LD_VAR 0 1
14811: PUSH
14812: LD_INT 0
14814: PLUS
14815: PUSH
14816: LD_INT 0
14818: GREATER
14819: IFFALSE 14828
// YouLost ( ArabBreakthrough ) ;
14821: LD_STRING ArabBreakthrough
14823: PPUSH
14824: CALL_OW 104
// enable ;
14828: ENABLE
// end ;
14829: PPOPN 1
14831: END
// every 0 0$0.9 marked 13 do var my_filter , un ;
14832: GO 14834
14834: DISABLE
14835: LD_INT 0
14837: PPUSH
14838: PPUSH
// begin my_filter := FilterUnitsInArea ( KnollArea , [ f_side , you ] ) ;
14839: LD_ADDR_VAR 0 1
14843: PUSH
14844: LD_INT 2
14846: PPUSH
14847: LD_INT 22
14849: PUSH
14850: LD_EXP 4
14854: PUSH
14855: EMPTY
14856: LIST
14857: LIST
14858: PPUSH
14859: CALL_OW 70
14863: ST_TO_ADDR
// if ( 0 + my_filter ) = 0 then
14864: LD_INT 0
14866: PUSH
14867: LD_VAR 0 1
14871: PLUS
14872: PUSH
14873: LD_INT 0
14875: EQUAL
14876: IFFALSE 14975
// begin for un in sm_attack1 do
14878: LD_ADDR_VAR 0 2
14882: PUSH
14883: LD_EXP 9
14887: PUSH
14888: FOR_IN
14889: IFFALSE 14919
// if isok ( un ) then
14891: LD_VAR 0 2
14895: PPUSH
14896: CALL_OW 302
14900: IFFALSE 14917
// AddComAgressiveMove ( un , 73 , 138 ) ;
14902: LD_VAR 0 2
14906: PPUSH
14907: LD_INT 73
14909: PPUSH
14910: LD_INT 138
14912: PPUSH
14913: CALL_OW 174
14917: GO 14888
14919: POP
14920: POP
// for un in sm_attack2 do
14921: LD_ADDR_VAR 0 2
14925: PUSH
14926: LD_EXP 10
14930: PUSH
14931: FOR_IN
14932: IFFALSE 14962
// if isok ( un ) then
14934: LD_VAR 0 2
14938: PPUSH
14939: CALL_OW 302
14943: IFFALSE 14960
// AddComAgressiveMove ( un , 73 , 138 ) ;
14945: LD_VAR 0 2
14949: PPUSH
14950: LD_INT 73
14952: PPUSH
14953: LD_INT 138
14955: PPUSH
14956: CALL_OW 174
14960: GO 14931
14962: POP
14963: POP
// enable ( 12 ) ;
14964: LD_INT 12
14966: ENABLE_MARKED
// Disabled13 := true ;
14967: LD_ADDR_EXP 69
14971: PUSH
14972: LD_INT 1
14974: ST_TO_ADDR
// end ; if not Disabled13 then
14975: LD_EXP 69
14979: NOT
14980: IFFALSE 14983
// enable ;
14982: ENABLE
// end ;
14983: PPOPN 2
14985: END
// every 0 0$1 marked 15 do
14986: GO 14988
14988: DISABLE
// begin Wait ( Gaydar_wait ) ;
14989: LD_EXP 3
14993: PPUSH
14994: CALL_OW 67
// if not IsDead ( Gaydar ) and sm_pocet3 < attack_count then
14998: LD_EXP 27
15002: PPUSH
15003: CALL_OW 301
15007: NOT
15008: PUSH
15009: LD_EXP 65
15013: PUSH
15014: LD_EXP 49
15018: LESS
15019: AND
15020: IFFALSE 15108
// begin sm_pocet3 := sm_pocet3 + 1 ;
15022: LD_ADDR_EXP 65
15026: PUSH
15027: LD_EXP 65
15031: PUSH
15032: LD_INT 1
15034: PLUS
15035: ST_TO_ADDR
// PlaceUnitXY ( sm_attack3 [ sm_pocet3 ] , 19 , 2 , false ) ;
15036: LD_EXP 11
15040: PUSH
15041: LD_EXP 65
15045: ARRAY
15046: PPUSH
15047: LD_INT 19
15049: PPUSH
15050: LD_INT 2
15052: PPUSH
15053: LD_INT 0
15055: PPUSH
15056: CALL_OW 48
// ComMoveToArea ( sm_attack3 [ sm_pocet3 ] , PaloukArea ) ;
15060: LD_EXP 11
15064: PUSH
15065: LD_EXP 65
15069: ARRAY
15070: PPUSH
15071: LD_INT 6
15073: PPUSH
15074: CALL_OW 113
// Wait ( 10 ) ;
15078: LD_INT 10
15080: PPUSH
15081: CALL_OW 67
// AddComAttackUnit ( sm_attack3 [ sm_pocet3 ] , Gaydar ) ;
15085: LD_EXP 11
15089: PUSH
15090: LD_EXP 65
15094: ARRAY
15095: PPUSH
15096: LD_EXP 27
15100: PPUSH
15101: CALL_OW 175
// enable ;
15105: ENABLE
// end else
15106: GO 15109
// disable ;
15108: DISABLE
// end ;
15109: END
// every 0 0$1 marked 17 do var my_filter , un1 , un2 , distance , un_mem ;
15110: GO 15112
15112: DISABLE
15113: LD_INT 0
15115: PPUSH
15116: PPUSH
15117: PPUSH
15118: PPUSH
15119: PPUSH
// begin my_filter := FilterUnitsInArea ( KnollArea , [ f_side , you ] ) ;
15120: LD_ADDR_VAR 0 1
15124: PUSH
15125: LD_INT 2
15127: PPUSH
15128: LD_INT 22
15130: PUSH
15131: LD_EXP 4
15135: PUSH
15136: EMPTY
15137: LIST
15138: LIST
15139: PPUSH
15140: CALL_OW 70
15144: ST_TO_ADDR
// if my_filter <> [ ] then
15145: LD_VAR 0 1
15149: PUSH
15150: EMPTY
15151: NONEQUAL
15152: IFFALSE 15502
// begin for un1 in sm_attack1 do
15154: LD_ADDR_VAR 0 2
15158: PUSH
15159: LD_EXP 9
15163: PUSH
15164: FOR_IN
15165: IFFALSE 15326
// begin if IsOK ( un1 ) then
15167: LD_VAR 0 2
15171: PPUSH
15172: CALL_OW 302
15176: IFFALSE 15308
// begin distance := GetDistUnits ( un1 , my_filter [ 1 ] ) ;
15178: LD_ADDR_VAR 0 4
15182: PUSH
15183: LD_VAR 0 2
15187: PPUSH
15188: LD_VAR 0 1
15192: PUSH
15193: LD_INT 1
15195: ARRAY
15196: PPUSH
15197: CALL_OW 296
15201: ST_TO_ADDR
// un_mem := my_filter [ 1 ] ;
15202: LD_ADDR_VAR 0 5
15206: PUSH
15207: LD_VAR 0 1
15211: PUSH
15212: LD_INT 1
15214: ARRAY
15215: ST_TO_ADDR
// for un2 in my_filter do
15216: LD_ADDR_VAR 0 3
15220: PUSH
15221: LD_VAR 0 1
15225: PUSH
15226: FOR_IN
15227: IFFALSE 15290
// begin if distance > GetDistUnits ( un1 , un2 ) then
15229: LD_VAR 0 4
15233: PUSH
15234: LD_VAR 0 2
15238: PPUSH
15239: LD_VAR 0 3
15243: PPUSH
15244: CALL_OW 296
15248: GREATER
15249: IFFALSE 15281
// begin distance := GetDistUnits ( un1 , un2 ) ;
15251: LD_ADDR_VAR 0 4
15255: PUSH
15256: LD_VAR 0 2
15260: PPUSH
15261: LD_VAR 0 3
15265: PPUSH
15266: CALL_OW 296
15270: ST_TO_ADDR
// un_mem := un2 ;
15271: LD_ADDR_VAR 0 5
15275: PUSH
15276: LD_VAR 0 3
15280: ST_TO_ADDR
// end ; Wait ( 3 ) ;
15281: LD_INT 3
15283: PPUSH
15284: CALL_OW 67
// end ;
15288: GO 15226
15290: POP
15291: POP
// ComAttackUnit ( un1 , un2 ) ;
15292: LD_VAR 0 2
15296: PPUSH
15297: LD_VAR 0 3
15301: PPUSH
15302: CALL_OW 115
// end else
15306: GO 15324
// sm_attack1 := sm_attack1 diff un1 ;
15308: LD_ADDR_EXP 9
15312: PUSH
15313: LD_EXP 9
15317: PUSH
15318: LD_VAR 0 2
15322: DIFF
15323: ST_TO_ADDR
// end ;
15324: GO 15164
15326: POP
15327: POP
// for un1 in sm_attack2 do
15328: LD_ADDR_VAR 0 2
15332: PUSH
15333: LD_EXP 10
15337: PUSH
15338: FOR_IN
15339: IFFALSE 15500
// begin if IsOK ( un1 ) then
15341: LD_VAR 0 2
15345: PPUSH
15346: CALL_OW 302
15350: IFFALSE 15482
// begin distance := GetDistUnits ( un1 , my_filter [ 1 ] ) ;
15352: LD_ADDR_VAR 0 4
15356: PUSH
15357: LD_VAR 0 2
15361: PPUSH
15362: LD_VAR 0 1
15366: PUSH
15367: LD_INT 1
15369: ARRAY
15370: PPUSH
15371: CALL_OW 296
15375: ST_TO_ADDR
// un_mem := my_filter [ 1 ] ;
15376: LD_ADDR_VAR 0 5
15380: PUSH
15381: LD_VAR 0 1
15385: PUSH
15386: LD_INT 1
15388: ARRAY
15389: ST_TO_ADDR
// for un2 in my_filter do
15390: LD_ADDR_VAR 0 3
15394: PUSH
15395: LD_VAR 0 1
15399: PUSH
15400: FOR_IN
15401: IFFALSE 15464
// begin if distance > GetDistUnits ( un1 , un2 ) then
15403: LD_VAR 0 4
15407: PUSH
15408: LD_VAR 0 2
15412: PPUSH
15413: LD_VAR 0 3
15417: PPUSH
15418: CALL_OW 296
15422: GREATER
15423: IFFALSE 15455
// begin distance := GetDistUnits ( un1 , un2 ) ;
15425: LD_ADDR_VAR 0 4
15429: PUSH
15430: LD_VAR 0 2
15434: PPUSH
15435: LD_VAR 0 3
15439: PPUSH
15440: CALL_OW 296
15444: ST_TO_ADDR
// un_mem := un2 ;
15445: LD_ADDR_VAR 0 5
15449: PUSH
15450: LD_VAR 0 3
15454: ST_TO_ADDR
// end ; Wait ( 3 ) ;
15455: LD_INT 3
15457: PPUSH
15458: CALL_OW 67
// end ;
15462: GO 15400
15464: POP
15465: POP
// ComAttackUnit ( un1 , un2 ) ;
15466: LD_VAR 0 2
15470: PPUSH
15471: LD_VAR 0 3
15475: PPUSH
15476: CALL_OW 115
// end else
15480: GO 15498
// sm_attack2 := sm_attack2 diff un1 ;
15482: LD_ADDR_EXP 10
15486: PUSH
15487: LD_EXP 10
15491: PUSH
15492: LD_VAR 0 2
15496: DIFF
15497: ST_TO_ADDR
// end ;
15498: GO 15338
15500: POP
15501: POP
// end ; if sm_attack1 = [ ] and sm_attack2 = [ ] then
15502: LD_EXP 9
15506: PUSH
15507: EMPTY
15508: EQUAL
15509: PUSH
15510: LD_EXP 10
15514: PUSH
15515: EMPTY
15516: EQUAL
15517: AND
15518: IFFALSE 15523
// disable else
15520: DISABLE
15521: GO 15524
// enable ;
15523: ENABLE
// end ;
15524: PPOPN 5
15526: END
